AES暗号化アルゴリズムのlinuxでの復号に失敗した解決方法について


この間、プロジェクトがlinuxに展開される時、この問題に遭遇しました。Baiduは解決策を見つけました。ここで分かち合います。

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);
}
}
以上は小编が绍介したAES暗号化アルゴリズムについて、linuxで解読できなかった解决方法についてです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。