openssl中RSA数字签名的使用】的更多相关文章

参考: OpenSSL命令行工具验证数字签名 客户端需要生成一对密钥,服务器需要生成一对密钥,分别记为client_private.pem/client_public.pem和server_private.pem和server_public.pem. 步骤 1. 客户端下载服务器的公钥,server_public.pem: 2. 客户端使用服务器的公钥对数据(data)进行加密: 3. 客户端对数据(data)进行签名计算,再将结果用私有密钥进行加密,得到加密后的摘要签名: 4. 客户端使用加密…
http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= SEQUENCE { version Version, modulus INTEGER, -- n publicExponent INTEGER, -- e privateExponent INTEGER, -- d prime1 INTEGER, -- p prime2 INTEGER, -- q…
1.RSA 公钥和私钥的组成.以及加密和解密的公式: 2.模指数运算: 先做指数运算,再做模运算.如 5^3 mod 7 = 125 mod 7 = 6 3.RSA加密算法流程: 选择一对不同的.而且足够大的素数 p 和 q 计算 n = p * q 计算欧拉函数 f(n) = (p-1) * (q-1),p 和 q 须要保密 寻找与 f(n) 互质的数 e.而且 1 < e < f(n) 计算 d,使得 d * e ≡ 1 mod f(n) 公钥 KU = (e , n)   私钥 KR =…
本文记录了初次接触OpenSSL中的大数模块,重温了RSA加密流程,使用OpenSSL的接口包装成自用RSA加密接口,并且利用自己的接口演示了Alice与Bob通过RSA加密进行通讯的一个示例. 概览 自己的库中需要包含的功能有: 构造和对一个大整数对象赋值 (至少支持到2^65536-1) 大整数的加法.乘法.取模.加速乘方等基本算术运算 判断这个大整数是否是素数 通过两个大素数构造RSA公钥(n,e)和私钥d 随机生成80位,128位,256位,512位对称密钥 对不同长度的对称密钥进行加密…
1.openssl的安装 2.RSA密钥证书的生成 3.openssl的常用命令 1.openssl的安装 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现. 1.1 openssl 下载 下载其他人做的便捷版安装包,下载地址:http://slproweb.com/products/Win32OpenSSL.html 下载好后猛点就能安装. 1.2 环境变量配置 1.2.1 配置OPENSSL_HOME 1.2.…
OPENSSL安装:(VS) 1:第一步和所有的软件安装一样. 2:将OPENSSL中INLUCDE 和 LIB 分别拷贝到VS中VC的INLUCDE 和LIB目录下(我的机器上的目录是:C:\Program Files\Microsoft Visual Studio 10.0\VC. 3:在VS中项目的属性中,添加链接库,include链接库 如下图:…
openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具.我们即可以利用它提供的命令台工具生成密钥.证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密. RSA是一个非对称加密算法.简单说来,非对称加密算法就是说加密解密一个文件需要有两个密钥,一个用来加密,为公钥,一个用来解密,为私钥.证书可以用来授权公钥的使用. 今天小研究了下openssl的rsa加密,其中主要涉及利用公钥和密钥加解密文件,没有涉及对证书的操作.想要集体了解的可以去: http://ww…
JDK 6只支持MD2withRSA, MD5withRSA, SHA1withRSA 其他的如SHA512withRSA需要第三方包支持,如BC(bouncy castle) --20151126 更正:JDK 7已经可以支持SHA256withRSA和SHA512withRSA了 JDK的密钥长度默认仍是1024 package jdbc.pro.lin; import java.security.InvalidKeyException; import java.security.NoSuc…
加密(签名)的过程是(M的e次方)mod n,在这里我们把消息M假定为一个数字,但实际上消息一般为字符串,所以必须有一个将字符串转化为数字的规则,并且要让这个数字的大小和n相当(也不能比 n大).这样做的目的是为了使(M的e次方)> n ,假如不是这样那么C=(M的e次方)mod n = (M的e次方),也就是mod n完全没有作用,攻击者就能够轻松的通过取C的第e次方根来恢复M.那么下面来讨论这种转换的标准:  1,计算出格式化加密分组所需的大小.如果n是一个L位的数字,那么加密分组就有L/8…
1.java生成的公私钥格式为 pkcs8(PKCS8EncodedKeySpec), 而openssl默认生成的公私钥格式为 pkcs1 2.java采用的rsa默认补齐方式是pkcs1 (RSA/None/PKCS1Padding), 因此互用的时候需要将openssl中的补齐方式设置为RSA_PKCS1_PADDING 3.RSA加密中,加密数据长度有限制,不能超过密钥长度-11, 如密钥为1024位,则最长的加密数据位117字节: 加密后的密文长度总是为密钥的一半,即1024位的密文为5…