以前Android用的是服务器端拷过来的代码,是java的,自然没办法适配鸿蒙是ts的语法。自己翻译着写也是一脸懵逼。
下面我提供下加密的代码
class AES128ECB{
/**
* 使用AES对称密钥进行加密,ECB分组
* ECB、CBC加密模式,AES128,明文需为128位byte字节,即16位字符串,明文长度不是128位整数倍,必须使用填充方法补足
* @param content
* @param publicKey
* @returns 16进制加密结果字符串
*/
async Encrypt(content: string): Promise<string> {
let keys = this.base64Trans(‘你的key’)
let pkBlob: cryptoFramework.DataBlob = { data: base64Util.decodeSync(keys) };
// 创建密钥对象
let generator = cryptoFramework.createSymKeyGenerator('AES128');
// 导入外部密钥
let globalKey = await generator.convertKey(pkBlob);
let mode = cryptoFramework.CryptoMode.ENCRYPT_MODE;
//这里以AES加解密为例,支持AES、SM4、3DES,创建加解密对象
let globalCipher = cryptoFramework.createCipher('AES128|ECB|PKCS7');
await globalCipher.init(mode, globalKey, null);
//将传入的string格式的密钥转为Uint8Array数组
let plainText: cryptoFramework.DataBlob = { data: stringToUint8Array(content) };
let encryptData: cryptoFramework.DataBlob = await globalCipher.doFinal(plainText)
//将加密结果转换为16进制格式,用于保存或者传递
return uint8ArrayToHexString(encryptData.data).toUpperCase()
}
base64Trans(keys:string) {
let base64 = new util.Base64Helper();
let arr = new Uint8Array(buffer.from(keys).buffer)
keys = base64.encodeToStringSync(arr);
return keys
}
}
export default new AES128ECB();
有需要解密代码的可私信。