最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
关于AES加密算法在linux下解密失败的解决办法
时间:2022-06-30 16:10:12 编辑:袖梨 来源:一聚教程网
前段时间项目要部署到linux上时遇到了这个问题,百度一下找到了解决方案,在这分享一下:
代码如下 | 复制代码 |
public class RSAEncrypt { // 密钥 private static Key key; // KEY种子 private static String KEY_STR ="keyString"; // 常量 public static final String UTF_8 ="UTF-8"; public static final String AES ="AES"; // 静态初始化 static { try { // KEY 生成器 KeyGenerator generator = KeyGenerator.getInstance(AES); // 初始化算法,设置成“SHA1PRNG”是为了防止在linux环境下随机生成算法 SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(KEY_STR.getBytes(UTF_8)); //128,192,256 generator.init(128,secureRandom); // 生成密钥 key = generator.generateKey(); generator = null; } catch (Exception e) { throw new RuntimeException(e); } } /** * 对源字符串加密,返回 BASE64编码后的加密字符串 * * @param source * 源字符串,明文 * @return 密文字符串 */ public static String encode(String source) { try { // 根据编码格式获取字节数组 byte[] sourceBytes = source.getBytes(UTF_8); // 加密模式 Cipher cipher = Cipher.getInstance(AES); cipher.init(Cipher.ENCRYPT_MODE, key); // 加密后的字节数组 byte[] encryptSourceBytes = cipher.doFinal(sourceBytes); // Base64编码器 BASE64Encoder base64Encoder = new BASE64Encoder(); return base64Encoder.encode(encryptSourceBytes); } catch (Exception e) { // throw 也算是一种 return 路径 throw new RuntimeException(e); } } /** * 对本工具类 encode() 方法加密后的字符串进行解码/解密 * * @param encrypted * 被加密过的字符串,即密文 * @return 明文字符串 */ public static String decode(String encrypted) { // Base64解码器 BASE64Decoder base64Decoder = new BASE64Decoder(); try { // 先进行base64解码 byte[] cryptedBytes = base64Decoder.decodeBuffer(encrypted); // 解密模式 Cipher cipher = Cipher.getInstance(AES); cipher.init(Cipher.DECRYPT_MODE, key); // 解码后的字节数组 byte[] decryptStrBytes = cipher.doFinal(cryptedBytes); // 采用给定编码格式将字节数组变成字符串 return new String(decryptStrBytes, UTF_8); } catch (Exception e) { // 这种形式确实适合处理工具类 throw new RuntimeException(e); } } |
相关文章
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22
- 《潜行者2:切尔诺贝利之心》神出鬼没成就攻略分享 11-22
- 《潜行者2:切尔诺贝利之心》赶尽杀绝成就攻略分享 11-22
- 《潜行者2:切尔诺贝利之心》探测器升级方法介绍 11-22
- 《潜行者2:切尔诺贝利之心》负重控制攻略分享 11-22
- 《潜行者2:切尔诺贝利之心》背包机制特点介绍 11-22