vue3 使用CBC 加密 和 C#解密方法
时间: 2023-09-12 22:07:44 浏览: 143
C#加密解密方法
以下是使用 Vue 3 中的 CryptoJS 库进行 CBC 加密的示例代码:
```javascript
import CryptoJS from 'crypto-js'
const key = CryptoJS.enc.Utf8.parse('0123456789abcdef')
const iv = CryptoJS.enc.Utf8.parse('abcdef0123456789')
// 加密
const plaintext = 'hello, world!'
const ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString()
console.log(ciphertext) // 输出加密后的密文
```
在上面的代码中,首先将密钥和 IV 转换为 CryptoJS 的 `WordArray` 类型,然后使用 `CryptoJS.AES.encrypt()` 方法进行加密。其中,`mode` 指定为 CBC 模式,`padding` 指定为 PKCS7 填充。
以下是使用 C# 进行 CBC 解密的示例代码:
```csharp
using System;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main(string[] args)
{
string ciphertext = "U2FsdGVkX19v4O3ZqU4gG4zq43Z7UqVCAzj7S+9pB1c="; // 加密后的密文
string key = "0123456789abcdef";
string iv = "abcdef0123456789";
byte[] encryptedBytes = Convert.FromBase64String(ciphertext);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
// 解密数据
using (ICryptoTransform decryptor = aes.CreateDecryptor())
{
byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
string decryptedText = Encoding.UTF8.GetString(decryptedBytes);
Console.WriteLine(decryptedText);
}
}
}
}
```
在上面的代码中,首先将密文、密钥和 IV 转换为对应的字节数组,然后使用 `Aes.Create()` 方法创建 `Aes` 实例,并将加密模式和填充模式设置为 CBC 和 PKCS7。最后,使用 `aes.CreateDecryptor()` 方法创建解密器对象,并将密文解密成明文。
阅读全文