JNPF 数据加密

发布时间:2026/7/23 14:50:54
JNPF 数据加密 数据加密一、核心功能数据加密是 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){_encryptencrypt;}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(intkeySize2048){usingvarrsanewRSACryptoServiceProvider(keySize);return(rsa.ToXmlString(false),rsa.ToXmlString(true));}publicstringEncrypt(stringplainText,stringpublicKey){usingvarrsanewRSACryptoServiceProvider();rsa.FromXmlString(publicKey);varbytesEncoding.UTF8.GetBytes(plainText);varencryptedBytesrsa.Encrypt(bytes,true);returnConvert.ToBase64String(encryptedBytes);}publicstringDecrypt(stringcipherText,stringprivateKey){usingvarrsanewRSACryptoServiceProvider();rsa.FromXmlString(privateKey);varbytesConvert.FromBase64String(cipherText);vardecryptedBytesrsa.Decrypt(bytes,true);returnEncoding.UTF8.GetString(decryptedBytes);}}3.3 SHA 哈希publicclassSHA1Encryption{publicstringEncrypt(stringplainText){usingvarsha1SHA1.Create();varbytesEncoding.UTF8.GetBytes(plainText);varhashBytessha1.ComputeHash(bytes);returnBitConverter.ToString(hashBytes).Replace(-,);}}四、使用示例4.1 字符串扩展方法框架提供了丰富的字符串扩展方法// AES 加密/解密stringencryptedHello World.AESEncrypt(key,iv);stringdecryptedencrypted.AESDecrypt(key,iv);// RSA 加密/解密stringencryptedHello World.RSAEncrypt(publicKey);stringdecryptedencrypted.RSADecrypt(privateKey);// SHA1 哈希stringhashpassword.SHA1Encrypt();// MD5 哈希stringhashpassword.MD5Encrypt();// PBKDF2 密码哈希stringhashpassword.PBKDF2Encrypt();boolverifiedpassword.PBKDF2Verify(hash);4.2 直接调用加密类publicclassUserService{privatereadonlyAESEncryption_aesEncryption;privatereadonlyRSAEncryption_rsaEncryption;publicUserService(AESEncryptionaesEncryption,RSAEncryptionrsaEncryption){_aesEncryptionaesEncryption;_rsaEncryptionrsaEncryption;}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(){varrsanewRSAEncryption();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 加密stringencryptedEncryptionHelper.AESEncrypt(Hello World,key,iv);// AES 解密stringdecryptedEncryptionHelper.AESDecrypt(encrypted,key,iv);// RSA 加密stringencryptedEncryptionHelper.RSAEncrypt(Hello World,publicKey);// RSA 解密stringdecryptedEncryptionHelper.RSADecrypt(encrypted,privateKey);6.2 随机密钥生成// 生成随机 AES 密钥256 位stringkeyAESEncrypt.GenerateKey(256);// 生成随机 IV128 位stringivAESEncrypt.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){usingvarinputStreamFile.OpenRead(inputPath);usingvaroutputStreamFile.OpenWrite(outputPath);usingvaraesAes.Create();aes.KeyEncoding.UTF8.GetBytes(key);aes.IVEncoding.UTF8.GetBytes(iv);usingvarencryptoraes.CreateEncryptor();usingvarcryptoStreamnewCryptoStream(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字符串加密扩展方法八、总结数据加密通过统一的加密接口和多种加密算法支持实现了灵活的数据加密管理。核心设计思想多种加密算法支持 AES、DES、RSA、SHA、MD5、PBKDF2 等多种加密算法统一接口提供统一的加密接口切换加密算法无需修改业务代码扩展方法提供字符串扩展方法简化加密调用安全可靠实现业界标准的加密算法确保数据安全灵活配置支持通过配置文件配置加密参数这种设计使得数据加密更加灵活和便捷提高了应用的安全性。