-
AES 加解密
提供通过 AES(百度百科 | Wikipedia) 算法加密和解密的功能。
可以使用该加密功能加密数据库连接字符串,在配置文件中使用加密后的连接字符串。在 .NET 中可以使用如下的 C# 代码解密连接字符串:
using System; using System.IO; using System.Security.Cryptography; ... // 将 BASE64 格式的 cipher 密文转换为字节数组 var bytes = Convert.FromBase64String(cipher); // 解密后的连接字符串明文 var connString = ""; // AES 算法 using (var aes = Aes.Create()) { // 此前已经获得初始化向量 aes.IV = iv; // 此前已经获得解密密钥 aes.Key = key; // 使用 CBC 模式 aes.Mode = CipherMode.CBC; // 使用 PKCS7 填充 aes.Padding = PaddingMode.PKCS7; using (var decryptor = aes.CreateDecryptor(aes.Key, aes.IV)) { using (MemoryStream ms = new MemoryStream(bytes)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { using (StreamReader reader = new StreamReader(cs)) { connString = reader.ReadToEnd(); } } } } } return connString;
-
加密
将指定的明文字符串按照 UTF-8 编码转换为字节数组,并使用给定的密钥、初始化向量和 AES/CBC/PKCS7Padding 算法加密字节数组,加密结果使用 BASE64 字符串格式表示。
密钥和初始化向量都必须是 16 字节(128 比特),格式可以为:
-
BASE64
长度为 24 的 BASE64 格式的字符串,比如 SzyDWPhsvCSxdAFvaUv9GA==。
-
十六进制字符串
长度为 32 的十六进制格式的字符串,比如 4b3c8358f86cbc24b174016f694bfd18。
-
字节数组
前缀为 {、[ 或没有前缀,后缀为 }、] 或没有后缀的字节数组。数组中每一个元素格式为:hh、0xhh、(byte)0xhh,其中 h 表示一个十六进制数字。比如:
{0x4b, 0x3c, 0x83, 0x58, 0xf8, 0x6c, 0xbc, 0x24, 0xb1, 0x74, 0x01, 0x6f, 0x69, 0x4b, 0xfd, 0x18},.NET 中适用此格式。
[0x4b, 0x3c, 0x83, 0x58, 0xf8, 0x6c, 0xbc, 0x24, 0xb1, 0x74, 0x01, 0x6f, 0x69, 0x4b, 0xfd, 0x18]
0x4b, 0x3c, 0x83, 0x58, 0xf8, 0x6c, 0xbc, 0x24, 0xb1, 0x74, 0x01, 0x6f, 0x69, 0x4b, 0xfd, 0x18
4b, 3c, 83, 58, f8, 6c, bc, 24, b1, 74, 01, 6f, 69, 4b, fd, 18
(byte)0x4b, (byte)0x3c, (byte)0x83, (byte)0x58, (byte)0xf8, (byte)0x6c, (byte)0xbc, (byte)0x24, (byte)0xb1, (byte)0x74, (byte)0x01, (byte)0x6f, (byte)0x69, (byte)0x4b, (byte)0xfd, (byte)0x18,Java 中适用此格式。
前后和中间的空白符号会被自动去除。
-
-
解密
将 BASE64 格式的密文使用给定的密钥、初始化向量和 AES/CBC/PKCS7Padding 算法进行解密,解密后的字节数组按 UTF-8 编码转换为字符串。
密钥和初始化向量都必须是 16 字节(128 比特),格式可以为:
-
BASE64
长度为 24 的 BASE64 格式的字符串,比如 SzyDWPhsvCSxdAFvaUv9GA==。
-
十六进制字符串
长度为 32 的十六进制格式的字符串,比如 4b3c8358f86cbc24b174016f694bfd18。
-
字节数组
前缀为 {、[ 或没有前缀,后缀为 }、] 或没有后缀的字节数组。数组中每一个元素格式为:hh、0xhh、(byte)0xhh,其中 h 表示一个十六进制数字。比如:
{0x4b, 0x3c, 0x83, 0x58, 0xf8, 0x6c, 0xbc, 0x24, 0xb1, 0x74, 0x01, 0x6f, 0x69, 0x4b, 0xfd, 0x18},.NET 中适用此格式。
[0x4b, 0x3c, 0x83, 0x58, 0xf8, 0x6c, 0xbc, 0x24, 0xb1, 0x74, 0x01, 0x6f, 0x69, 0x4b, 0xfd, 0x18]
0x4b, 0x3c, 0x83, 0x58, 0xf8, 0x6c, 0xbc, 0x24, 0xb1, 0x74, 0x01, 0x6f, 0x69, 0x4b, 0xfd, 0x18
4b, 3c, 83, 58, f8, 6c, bc, 24, b1, 74, 01, 6f, 69, 4b, fd, 18
(byte)0x4b, (byte)0x3c, (byte)0x83, (byte)0x58, (byte)0xf8, (byte)0x6c, (byte)0xbc, (byte)0x24, (byte)0xb1, (byte)0x74, (byte)0x01, (byte)0x6f, (byte)0x69, (byte)0x4b, (byte)0xfd, (byte)0x18,Java 中适用此格式。
前后和中间的空白符号会被自动去除。
-
-