JNPF 数据加密

发布时间:2026/9/29 15:25:28

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

相关新闻

智能体测开Day31

智能体测开Day31

2026/8/23 4:17:26

test_skipimport pytestversion "V1R2" pytest.fixture def login():print("前置")yieldprint("后置")def test_001(login):print("测试用例:添加成员")pytest.mark.skip def test_002(login):print("测试用例&#…

洁净设备空间革命:超薄FFU如何突破层高极限?本刊深度探访艾立工业全产业链制造现场——设计制造能力展示

洁净设备空间革命:超薄FFU如何突破层高极限?本刊深度探访艾立工业全产业链制造现场——设计制造能力展示

2026/8/23 4:17:26

在老旧洁净厂房升级、实验室改造以及高端精密制造的特定场景中,层高限制始终是工程师们无法回避的痛点。传统FFU(风机过滤单元)的箱体厚度通常在280mm至350mm之间,当建筑夹层有限或需要密集排布公用设施时,每一厘米的压…

SerDes芯片BIST与BER测试:原理、配置与信号完整性实战

SerDes芯片BIST与BER测试:原理、配置与信号完整性实战

2026/8/26 14:29:55

1. 项目概述与核心价值在高速数字系统设计中,比如高清视频传输、工业相机数据采集或者车载显示屏驱动,我们常常面临一个头疼的问题:如何把几十根并行的数据线,稳定可靠地传输到几米甚至十几米外的接收端?传统的并行总线…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…