我遇到了AES-128加密的问题。iOS中的加密字符串与Android中的不同。
下面是android代码:
public class Encryption {
private static final String ALGORITHM = "AES";
private static final String UNICODE_FORMAT = "UTF8";
public static String encryptValue(String valueToEnc) {
try {
Key key = generateKey();
Cipher c = Cipher.getInstance(ALGORITHM);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encValue = c.doFinal(valueToEnc.getBytes());
String encryptedValue = new Base64().encode(encValue);
String urlEncodeddata = URLEncoder.encode(encryptedValue, "UTF-8");
return urlEncodeddata;
} catch (Exception e) {
}
return valueToEnc;
}
private static Key generateKey() throws Exception {
byte[] keyAsBytes;
keyAsBytes = "MySixteenCharKey".getBytes(UNICODE_FORMAT);
Key key = new SecretKeySpec(keyAsBytes, ALGORITHM);
return key;
}
}
3条答案
按热度按时间j5fpnvbx1#
创建
string extension
并使用库CryptoSwift
并使用了
对于此特定加密代码的引用:
1.长度为16个字符的密钥表示AES-128
1.代码没有iVector,这意味着ECB模式
1.使用padding作为pkcs 5或pkcs 7在我的情况下没有任何区别
83qze16e2#
创建String的扩展,并使用以下函数进行加密和解密。
qzlgjiam3#
试试看: