- const AES256: string = 'AES256';
- const AES128_CBC_PKCS7: string = 'AES256|CBC|PKCS7';
复制代码- export class CipherModel {
- static stringToUint8Array(source:string){
- return new Uint8Array(buffer.from(source, 'utf-8').buffer);
- }
- static uint8ArrayToString(fileData:Uint8Array):string{
- return buffer.from(fileData.buffer).toString('utf-8');
- }
- public static aesEncrypt(message: string, key: string, iv: string) {
- let paramsSpec: cryptoFramework.IvParamsSpec = { iv: { data: CipherModel.stringToUint8Array(iv)}, algName: "IvParamsSpec" }
- let aesGenerator = cryptoFramework.createSymKeyGenerator(AES256);
- let un8arrykey = new Uint8Array(buffer.from(key, 'utf-8').buffer);
- let pubKeyBlob: cryptoFramework.DataBlob = { data: un8arrykey };
- aesGenerator.convertKey(pubKeyBlob, (err, symKey) => {
- let cipher = cryptoFramework.createCipher(AES128_CBC_PKCS7);
- cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, paramsSpec, (err, data) => {
- let input: cryptoFramework.DataBlob = { data: CipherModel.stringToUint8Array(message)};
- cipher.doFinal(input, (err, data) => {
- //let that = new util.Base64Helper();
- //let result = that.encodeToStringSync(data.data)
- LogUtil.d(TAG, "--------------------------result is " + data.data);
- })
- })
- })
- }
- public static aesDecrypt(message: string, key: string, iv: string) {
- let paramsSpec: cryptoFramework.IvParamsSpec = { iv: { data: CipherModel.stringToUint8Array(iv)}, algName: "IvParamsSpec" }
- let aesGenerator = cryptoFramework.createSymKeyGenerator(AES256);
- let cipher = cryptoFramework.createCipher(AES128_CBC_PKCS7);
- let pubKeyBlob: cryptoFramework.DataBlob = { data: CipherModel.stringToUint8Array(key) };
- aesGenerator.convertKey(pubKeyBlob, (err, symKey) => {
- cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, symKey, paramsSpec, (err, data) => {
- //let that = new util.Base64Helper();
- //let newMessage = that.decodeSync(message);
- let input: cryptoFramework.DataBlob = { data: message };
- cipher.doFinal(input, (err, data) => {
- let result = CipherModel.uint8ArrayToString(data.data)
- LogUtil.d(TAG, "result is " + result);
- })
- })
- })
- }
- }
复制代码
代码调整后:
- export class AESUtil {
- //iv ParamsSpec
- static genIvParamsSpec(iv:string) {
- let dataIv=Utils.stringToUt8Array(iv);
- let ivBlob: cryptoFramework.DataBlob = { data: dataIv };
- let ivParamsSpec: cryptoFramework.IvParamsSpec = {
- algName: "IvParamsSpec",
- iv: ivBlob
- };
- return ivParamsSpec;
- }
- //key 转 SymKey
- static async genSymKeyByData(key: string) {
- let aesGenerator = cryptoFramework.createSymKeyGenerator(AES256);
- let pubKeyBlob: cryptoFramework.DataBlob = { data: Utils.stringToUt8Array(key) };
- let symKey = await aesGenerator.convertKey(pubKeyBlob);
- return symKey;
- }
- //AES 加密 参数
- public static async aesEncryptBs64(message: string, key: string, iv: string) {
- //key转symKey
- let symKey = await AESUtil.genSymKeyByData(key);
- //加密
- let cipher = cryptoFramework.createCipher(AES128_CBC_PKCS7);
- await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, AESUtil.genIvParamsSpec(iv));
- let input: cryptoFramework.DataBlob = { data: Utils.stringToUt8Array(message)};
- let cryptData = await cipher.doFinal(input);
- //对加密值base64编码
- let that = new util.Base64Helper();
- let result = that.encodeToStringSync(cryptData.data)
- return result;
- }
- //AES 解密 参数
- public static async aesDecryptBs64(message: string, key: string, iv: string){
- //base 64解密
- let that = new util.Base64Helper();
- let newMessage = that.decodeSync(message);
- //key转symKey
- let symKey = await AESUtil.genSymKeyByData(key);
- //解密
- let cipher = cryptoFramework.createCipher(AES128_CBC_PKCS7);
- await cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, symKey, AESUtil.genIvParamsSpec(iv));
- let input: cryptoFramework.DataBlob = { data: newMessage };
- let cryptData = await cipher.doFinal(input);
- //对解密值 转string
- let result = Utils.ut8ArrayToString(cryptData.data)
- return result
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |