鸿蒙Next开发AES128加密,解密算法
有需要解密代码的可私信。
·
以前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();
有需要解密代码的可私信。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)