JNPF 数据加密
2026/7/23 14:50:31 网站建设 项目流程

数据加密

一、核心功能

数据加密是 JNPF 框架提供的统一加密系统,支持多种加密算法,包括对称加密和非对称加密。

1.1 核心价值

  • 多种加密算法:支持 AES、DES、RSA、SHA、MD5、PBKDF2 等多种加密算法
  • 统一接口:提供统一的加密接口,切换加密算法无需修改业务代码
  • 扩展方法:提供字符串扩展方法,简化加密调用
  • 安全可靠:实现业界标准的加密算法,确保数据安全

二、加密算法

2.1 对称加密

对称加密使用相同的密钥进行加密和解密:

算法说明密钥长度安全性
AES高级加密标准128/192/256 位
DES数据加密标准56 位低(已过时)

2.2 非对称加密

非对称加密使用公钥加密,私钥解密:

算法说明密钥长度安全性
RSA非对称加密算法1024/2048/4096 位

2.3 哈希算法

哈希算法将任意长度的数据转换为固定长度的哈希值:

算法说明输出长度安全性
MD5消息摘要算法128 位低(已过时)
SHA-1安全哈希算法160 位低(已过时)
SHA-256安全哈希算法256 位
SHA-512安全哈希算法512 位

2.4 密钥派生算法

算法说明用途
PBKDF2基于密码的密钥派生函数密码哈希

三、实现方式

3.1 AES 加密

publicclassAESEncryption{privatereadonlyIAESEncrypt_encrypt;publicAESEncryption(IAESEncryptencrypt){_encrypt=encrypt;}publicstringEncrypt(stringplainText,stringkey,stringiv){return_encrypt.Encrypt(plainText,key,iv);}publicstringDecrypt(stringcipherText,stringkey,stringiv){return_encrypt.Decrypt(cipherText,key,iv);}}

3.2 RSA 加密

publicclassRSAEncryption{public(stringPublicKey,stringPrivateKey)GenerateKeyPair(intkeySize=2048){usingvarrsa=newRSACryptoServiceProvider(keySize);return(rsa.ToXmlString(false),rsa.ToXmlString(true));}publicstringEncrypt(stringplainText,stringpublicKey){usingvarrsa=newRSACryptoServiceProvider();rsa.FromXmlString(publicKey);varbytes=Encoding.UTF8.GetBytes(plainText);varencryptedBytes=rsa.Encrypt(bytes,true);returnConvert.ToBase64String(encryptedBytes);}publicstringDecrypt(stringcipherText,stringprivateKey){usingvarrsa=newRSACryptoServiceProvider();rsa.FromXmlString(privateKey);varbytes=Convert.FromBase64String(cipherText);vardecryptedBytes=rsa.Decrypt(bytes,true);returnEncoding.UTF8.GetString(decryptedBytes);}}

3.3 SHA 哈希

publicclassSHA1Encryption{publicstringEncrypt(stringplainText){usingvarsha1=SHA1.Create();varbytes=Encoding.UTF8.GetBytes(plainText);varhashBytes=sha1.ComputeHash(bytes);returnBitConverter.ToString(hashBytes).Replace("-","");}}

四、使用示例

4.1 字符串扩展方法

框架提供了丰富的字符串扩展方法:

// AES 加密/解密stringencrypted="Hello World".AESEncrypt(key,iv);stringdecrypted=encrypted.AESDecrypt(key,iv);// RSA 加密/解密stringencrypted="Hello World".RSAEncrypt(publicKey);stringdecrypted=encrypted.RSADecrypt(privateKey);// SHA1 哈希stringhash="password".SHA1Encrypt();// MD5 哈希stringhash="password".MD5Encrypt();// PBKDF2 密码哈希stringhash="password".PBKDF2Encrypt();boolverified="password".PBKDF2Verify(hash);

4.2 直接调用加密类

publicclassUserService{privatereadonlyAESEncryption_aesEncryption;privatereadonlyRSAEncryption_rsaEncryption;publicUserService(AESEncryptionaesEncryption,RSAEncryptionrsaEncryption){_aesEncryption=aesEncryption;_rsaEncryption=rsaEncryption;}publicvoidEncryptUserData(UserInfouser){// 使用 AES 加密敏感数据user.Email=_aesEncryption.Encrypt(user.Email,"key","iv");user.Phone=_aesEncryption.Encrypt(user.Phone,"key","iv");}publicvoidEncryptForTransmission(stringdata){// 使用 RSA 加密传输数据varencrypted=_rsaEncryption.Encrypt(data,"publicKey");}}

4.3 密码哈希

publicclassAuthService{publicstringHashPassword(stringpassword){returnpassword.PBKDF2Encrypt();}publicboolVerifyPassword(stringpassword,stringhashedPassword){returnpassword.PBKDF2Verify(hashedPassword);}}

4.4 RSA 密钥生成

publicclassKeyService{public(stringPublicKey,stringPrivateKey)GenerateKeys(){varrsa=newRSAEncryption();returnrsa.GenerateKeyPair(2048);}}

五、配置选项

5.1 加密配置

appsettings.json中配置:

{"EncryptionSettings":{"AES":{"Key":"your-256-bit-key","IV":"your-128-bit-iv"},"RSA":{"KeySize":2048,"PublicKey":"your-public-key","PrivateKey":"your-private-key"}}}

5.2 AES 配置

配置项默认值说明
KeynullAES 密钥(16/24/32 字节)
IVnull初始化向量(16 字节)

5.3 RSA 配置

配置项默认值说明
KeySize2048RSA 密钥长度
PublicKeynullRSA 公钥
PrivateKeynullRSA 私钥

六、高级特性

6.1 加密帮助类

使用EncryptionHelper简化加密操作:

// AES 加密stringencrypted=EncryptionHelper.AESEncrypt("Hello World","key","iv");// AES 解密stringdecrypted=EncryptionHelper.AESDecrypt(encrypted,"key","iv");// RSA 加密stringencrypted=EncryptionHelper.RSAEncrypt("Hello World","publicKey");// RSA 解密stringdecrypted=EncryptionHelper.RSADecrypt(encrypted,"privateKey");

6.2 随机密钥生成

// 生成随机 AES 密钥(256 位)stringkey=AESEncrypt.GenerateKey(256);// 生成随机 IV(128 位)stringiv=AESEncrypt.GenerateIV();// 生成 RSA 密钥对var(publicKey,privateKey)=RSAEncryption.GenerateKeyPair(2048);

6.3 加密模式

支持多种 AES 加密模式:

模式说明
CBC密码块链模式(默认)
ECB电子密码本模式
CFB密码反馈模式
OFB输出反馈模式

6.4 填充模式

支持多种填充模式:

模式说明
PKCS7PKCS7 填充(默认)
Zeros零填充
None无填充

6.5 文件加密

使用 AES 加密文件:

publicvoidEncryptFile(stringinputPath,stringoutputPath,stringkey,stringiv){usingvarinputStream=File.OpenRead(inputPath);usingvaroutputStream=File.OpenWrite(outputPath);usingvaraes=Aes.Create();aes.Key=Encoding.UTF8.GetBytes(key);aes.IV=Encoding.UTF8.GetBytes(iv);usingvarencryptor=aes.CreateEncryptor();usingvarcryptoStream=newCryptoStream(outputStream,encryptor,CryptoStreamMode.Write);inputStream.CopyTo(cryptoStream);}

6.6 安全建议

建议说明
使用 AES-256优先使用 256 位密钥的 AES 加密
使用 RSA-2048+优先使用 2048 位以上的 RSA 密钥
不要使用 MD5/SHA-1这些算法已被证明不安全
使用 PBKDF2 存储密码不要直接存储密码明文或简单哈希
妥善保管密钥密钥不要硬编码在代码中,使用配置文件或密钥管理服务

七、核心文件

文件说明
AESEncryption.csAES 对称加密实现
AESEncrypt.csAES 加密接口实现
RSAEncryption.csRSA 非对称加密实现
SHA1Encryption.csSHA-1 哈希实现
MD5Encryption.csMD5 哈希实现
PBKDF2Encryption.csPBKDF2 密钥派生实现
DESCEncryption.csDES 对称加密实现
StringEncryptionExtensions.cs字符串加密扩展方法

八、总结

数据加密通过统一的加密接口和多种加密算法支持,实现了灵活的数据加密管理。核心设计思想:

  1. 多种加密算法:支持 AES、DES、RSA、SHA、MD5、PBKDF2 等多种加密算法
  2. 统一接口:提供统一的加密接口,切换加密算法无需修改业务代码
  3. 扩展方法:提供字符串扩展方法,简化加密调用
  4. 安全可靠:实现业界标准的加密算法,确保数据安全
  5. 灵活配置:支持通过配置文件配置加密参数

这种设计使得数据加密更加灵活和便捷,提高了应用的安全性。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询