JNPF 数据加密

发布时间:2026/9/25 13:43:47
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 等多种加密算法统一接口提供统一的加密接口切换加密算法无需修改业务代码扩展方法提供字符串扩展方法简化加密调用安全可靠实现业界标准的加密算法确保数据安全灵活配置支持通过配置文件配置加密参数这种设计使得数据加密更加灵活和便捷提高了应用的安全性。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询