- 浏览: 1504227 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
源自:http://www.cnblogs.com/chnking/archive/2007/08/30/875947.html
RSA证书加、解密敏感数据
X.509证书标准支持三种不对称加密算法:RSA, DSA, Diffie-Hellman algorithms。最常用的是RSA算法。所以本文就以前面章节使用makecert工具生成的生成的MyTestCert证书进行加密解密,这个证书具有RSA算法1024位的密钥对。
Figure 12. RSA加密解密过程
证书使用前面“使用makecert工具获得”章节生成的MyTestCert,当然也可以是从商业CA获得的证书。
你获得的证书应该是含有公钥和私钥的完整证书,一般是pfx形式的证书。
要接收加密数据,需要把你的公钥分发给加密数据的加密方,加密方使用你的公钥加密数据。
证书要么以pfx形式存在,要么被导入到证书存储区。
如果你的证书存在于证书存储区可以通过证书管理控制台提供的证书导出功能导出只含有公钥的cer证书。
如果证书以pfx证书文件形式存在,可以通过代码读取证书然后导出为只含公钥的cer证书。
参考前面章节导出一个名为MyTestCert.cer证书,将此证书分发给需要用来加密的加密方。
待加密的数据可能有两种形式,一种是二进制的数据,本身就是一组字节流,这样的数据可以跳过这一步,直接进入加密步骤。还有一种情况是字符串数据,字符串中同样的字符使用不同的代码页会生成不同的字节码,所以从字符串到字节流的转换是需要指定使用何种编码的。在解密之后,要从字节流转换到字符串就要使用相同的代码页解码,否则就会出现乱码。
//保存明文文件的字节数组
Byte[] plainTextByte = Encoding.UTF8.GetBytes(“RSA证书对敏感数据进行加密!”);
这里用utf8代码页对明文进行编码,把明文字符串转成字节流。
//从只包含公钥的证书文件载入证书
X509Certificate2 myX509Certificate2 = new X509Certificate2(@"C:\Samples\PartnerAEncryptMsg\MyTestCert.cer");
//从cer证书中获得含公钥的RSACryptoServiceProvider
RSACryptoServiceProvider myRSACryptoServiceProvider = (RSACryptoServiceProvider)myX509Certificate2.PublicKey.Key;
//使用RSACryptoServiceProvider把明文字节流加密为密文字节流
Byte[] Cryptograph = myRSACryptoServiceProvider.Encrypt(plainTextByte, false);
使用1024为的密钥加密,原料应该是128字节(1024位)的byte[]的原始数据,加密后的数据也是128字节(1024位),如果明文不足128字节,RSACryptoServiceProvider会自动用随机数补足128字节。
Dotnet的RSA实现有个特点,它必须要在明文中添加一些随机数,所以明文不能把128字节占满,实际测试,明文最多为117字节,留下的空间用来填充随机数。
所以,用同一个密钥对同一串字符串进行加密,每次得到的密文都是不一样的。
//从证书文件载入证书,如果含有私钥的,需要提供保存证书时设置的密码
X509Certificate2 myX509Certificate2 = new X509Certificate2(@"C:\Samples\PartnerAEncryptMsg\MyTestCert.pfx", "password");
//从证书中获得含私钥的RSACryptoServiceProvider
RSACryptoServiceProvider myRSACryptoServiceProvider = (RSACryptoServiceProvider)myX509Certificate2.PrivateKey;
//使用RSACryptoServiceProvider把密文字节流解密为明文字节流
byte[] plaintextByte = myRSACryptoServiceProvider.Decrypt(Cryptograph, false);
解密需要载入含私钥的pfx证书,需要提供私钥保护密码。
使用加密时采用的同样的代码页utf8把解密后的明文byte[]转成字符串
string Plaintext = Encoding.UTF8.GetString(plaintextByte);
发表评论
-
客户端用https连接服务器的一点心得
2016-05-11 17:13 488转自:http://dannyyuan.blog.51ct ... -
解决PKIX:unable to find valid certification path to requested target 的问题
2016-05-11 17:11 883转自:http://blog.csdn.net/ ... -
cookie的secure、httponly属性设置
2014-03-04 16:19 17066转载自:http://www.cnblogs ... -
框架注入漏洞
2014-02-27 16:21 72412 详细描述 攻击者有可能注入含有恶 ... -
链接注入漏洞
2014-02-27 16:20 18643详细描述 “链接注入”是修改站点内容的行为,其方式为将外 ... -
XSS跨站脚本攻击在Java开发中防范的方法
2014-02-27 16:14 4143详细描述 跨站脚本攻击(也称为XSS)指利用网站漏洞从用 ... -
XSS跨站脚本攻击在Java开发中防范的方法
2014-02-27 09:48 7704转自:http://hi.baidu.com/hkr_tam ... -
HTTP 1.1状态代码及其含义
2011-10-20 10:16 1440下表显示了常见 ... -
使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
2010-03-03 17:00 2217上一章节讨论了如何 ... -
使用X.509数字证书加密解密实务(一)-- 证书的获得和管理
2010-03-03 16:40 3249源自:http://www.cnblogs.com/chnki ... -
X.509 数字证书结构和实例
2010-03-03 16:36 2927源自:http://www.cnblogs.com/chnki ... -
CA基本常识:X.509标准
2010-03-03 16:21 4640原文连接: http://www.cnblogs.com ... -
安全认证相关文档
2010-03-02 15:59 1053PKCS#11 中文手册 -
openssl使用手册
2009-08-04 10:28 7353OpenSSL有两种运行模式 ... -
JA-SIG(CAS)学习笔记1
2009-07-15 01:16 1322实验步骤: STEP 1,搭 ... -
公钥系统_数字签名_数字证书工作原理入门 (转)
2009-02-24 07:27 2103公钥系统 / 数字签名 / 数字证书工作原理入 ... -
详解公钥、私钥、数字证书的概念
2009-02-05 15:59 3402http://pepa.iteye.com/blog/2509 ... -
CA系统、证书常识
2009-02-05 15:58 14581.什么是CA CA是Certi ... -
密钥库文件格式(Keystore)和证书文件格式(Certificate)
2009-02-05 15:56 3153密钥库文件格式【Keystore】 格式 : ... -
java 项目的安全学习地址
2009-02-01 16:07 1452java 项目的安全学习地址: http://www.ja-s ...
相关推荐
使用X.509数字证书加密解密,使用RSA证书加密敏感数据
NULL 博文链接:https://conkeyn.iteye.com/blog/607092
JCE.Zip-DES加密-AES加密--RSA加密学习所需源码 java cryptography extension source code
学习RSA算法,读取数字证书中的私钥对文件进行加密,使用数字证书的公钥解密,这种方式就是RSA算法.
前端RSA加密解密的使用,含jsencrypt.js文件(uni-app也可用)
RSA公私钥加解密最稳定的必须jar RSA公私钥加解密最稳定的必须jar
RSA加密解密算法源码,功能齐全,没有密码,使用方便,学习用.
RSA解密加密JAVA
security.js基于RSA算法用于前端加密与密钥传输,需要跟后台配合使用 var key = new RSAUtils.getKeyPair("${publicKeyExponent}", "", "${publicKeyModulus}"); var reversedPwd = password.split("").reverse...
> 一个适用于微信小程序的RSA签名库。 RSA签名的小程序DEMO:https://github.com/zhangzhaopds/WeixinApp_RSA_Signature.git 使用 1、引入文件 var RSA = require('../../utils/wxapp_rsa.js') 2、调用 var private...
自己写的加密证书和RSA加密解密,希望对大家有帮助!
RSA加密解密算法objective-c 完美实现
简介了X.509数字证书相关的详细结构以及运用这些结构进行开发的实例。
根据证书私钥加签---》RSA公钥加密--》RSA私钥解密---》证书公钥验签
前端使用jsencrypt进行RSA加密解密(uniapp也可用) 一、引入jsencrypt.js文件 jsencrypt.js下载:https://download.csdn.net/download/qq_34692870/85738283?spm=1001.2014.3 值得一提的是,若是引入正常的...
RSA算法是最著名的公开密码体制。基于大数分解的难度。其公开密钥和私人密钥是一对大素数的函数,从一个公开密钥和密文中恢复出明文的难度等价于...算法过程:首先是设计密钥,然后是对消息加密,最后是对密文解密。
基于.net的RSA私钥加密 公钥解密的源码--201903
C#做的RSA加密解密, 带winform界面, 测试通过, 代码完整。
rsa的加密算法,可以实现简单的数据加密以及解密工程,没有图形界面
RSA加密解密C#实现调用实例 public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString) { try { byte[] PlainTextBArray; byte[] CypherTextBArray; string Result; System.Security....