AES 加解密算法

最近的vue项目有用到对密码进行加解密操作
MD5不可逆
网上看了一些别的算法,最后确认使用AES算法进行加解密

// 安装crypto-js
npm install crypto-js --save

创建CryptoJS.js文件封装加解密方法,内容如下

//封装加解密方法
import CryptoJS from "crypto-js";
export default {
  // 加密
  encrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : "xxxxxxxxxxxxxxxx";
    let key = CryptoJS.enc.Utf8.parse(keyStr);
    let srcs = CryptoJS.enc.Utf8.parse(word);
    let encrypted = CryptoJS.AES.encrypt(srcs, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
  },
  // 解密
  decrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : "xxxxxxxxxxxxxxxx";
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var decrypt = CryptoJS.AES.decrypt(word, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  }
};

第一个参数word是待加密或者解密的字符串;
第二个参数keyStr是aes加密需要用到的16位字符串的key,keyStr 的长度要不小于14位,否则解密时会显示空白----这个keyStr可自定义,由前端和后端共同约定好即可;
如果想对一个js对象加密,需要先把该对象转成json字符串

在需要的页面引入该js文件

import CryptoJS from '../assets/js/CryptoJS';
// 加密值根据keyStr的变化而变化
// 加密--888888
let oldEncryPwd = CryptoJS.encrypt(this.pwdForm.oldPwd);      // Fof8zAtAP9OccD4qVBTU32==
// 解密
let dePwd = CryptoJS.decrypt('Fof8zAtAP9OccD4qVBTU3g==');      // 888888
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的AES加解密算法是一种对称加密算法,它使用相同的密钥进行加密和解密操作。AES算法是目前广泛应用的加密算法之一,它具有高度的安全性和效率。 在C语言中,可以使用第三方库或者自行实现AES算法。以下是一个简单的示例代码,用于演示AES加解密算法的基本原理: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/aes.h> // AES加密函数 void aes_encrypt(const unsigned char *plaintext, const unsigned char *key, unsigned char *ciphertext) { AES_KEY aes_key; AES_set_encrypt_key(key, 128, &aes_key); AES_encrypt(plaintext, ciphertext, &aes_key); } // AES解密函数 void aes_decrypt(const unsigned char *ciphertext, const unsigned char *key, unsigned char *plaintext) { AES_KEY aes_key; AES_set_decrypt_key(key, 128, &aes_key); AES_decrypt(ciphertext, plaintext, &aes_key); } int main() { unsigned char plaintext[] = "Hello, AES!"; unsigned char key[] = "0123456789abcdef"; unsigned char ciphertext[AES_BLOCK_SIZE]; unsigned char decryptedtext[AES_BLOCK_SIZE]; // 加密 aes_encrypt(plaintext, key, ciphertext); // 解密 aes_decrypt(ciphertext, key, decryptedtext); printf("Plaintext: %s\n", plaintext); printf("Ciphertext: "); for (int i = 0; i < AES_BLOCK_SIZE; i++) { printf("%02x", ciphertext[i]); } printf("\n"); printf("Decryptedtext: %s\n", decryptedtext); return 0; } ``` 上述代码使用了OpenSSL库中的AES函数来实现加解密操作。首先,需要调用`AES_set_encrypt_key`函数或`AES_set_decrypt_key`函数来设置密钥。然后,使用`AES_encrypt`函数或`AES_decrypt`函数进行加密或解密操作。 请注意,这只是一个简单的示例代码,实际应用中需要考虑更多的安全性和错误处理。另外,为了使用OpenSSL库,需要在编译时链接OpenSSL库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值