Encryption RSA公钥的整数部分

Encryption RSA公钥的整数部分,encryption,cryptography,Encryption,Cryptography,我在学习RSA密码系统。公钥由(n,e)、整数(两个大素数的乘积)和加密密钥组成。我想分离整数(n)和键(e)。典型的公钥以base64表示,其类型如下: -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0 FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSe

我在学习RSA密码系统。公钥由(n,e)、整数(两个大素数的乘积)和加密密钥组成。我想分离整数(n)和键(e)。典型的公钥以base64表示,其类型如下:

 -----BEGIN PUBLIC KEY-----

 MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0
 FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/
 3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB

-----END PUBLIC KEY-----

现在从上面的密钥来看,不清楚哪个部分是整数,哪个部分是加密密钥。如果有人能指导我,这将非常有帮助。

这是ASN.1
SubjectPublicKeyInfo
结构的基本64位DER编码,该结构在中定义(ASN.1定义请参见第4.1节,其他文字说明请参见第4.1.2.7节)

SubjectPublicKeyInfo::=序列{
算法识别器,
subjectPublicKey位字符串}
subjectPublicKey
字段的内容取决于
算法
字段指定的密钥算法

对于RSA,它将是中定义的
RSAPublicKey
结构

RSAPublicKey::=序列{
模数整数,--n
指数整数——e
}
如果您选择的编程语言支持RSA加密,则很可能它提供了一个类或结构或其他特定于语言的方法来读取通用
SubjectPublicKeyInfo
数据,并将其转换为允许访问RSA特定数据的某种表示形式。例如,在Java中

byte[]bytes=javax.xml.bind.DatatypeConverter.parseBase64Binary(“migfma0gcsqgsib3dqebaquaa4gnadcbiqbggqkuko1de7zhzzzzzj6+h0qtjtkvxwtcpvke4ecz0fpqri0cb2jzfj/dgysff6vwwzkjegcjdol5ulsusfncczwbq7rknussmqgkvb1/3j+skzz6utw+5u09lhnsjzzj6qv6q51czzz4bz4g4bjzz4bjbz4bqbjbz4bz4bjbqbjbf4bjbf;
X509EncodedKeySpec genericKeySpec=新X509EncodedKeySpec(字节);
KeyFactory=KeyFactory.getInstance(“RSA”);
PublicKey PublicKey=factory.generatePublic(genericKeySpec);
RSAPublicKeySpec rsaKeySpec=factory.getKeySpec(publicKey,RSAPublicKeySpec.class);
System.out.println(“n=“+rsaKeySpec.getmodule());
System.out.println(“e=“+rsaKeySpec.getPublicExponent());

这是ASN.1
SubjectPublicKeyInfo
结构的DER编码的Base64,在中定义(ASN.1定义参见第4.1节,其他文本描述参见第4.1.2.7节)

SubjectPublicKeyInfo::=序列{
算法识别器,
subjectPublicKey位字符串}
subjectPublicKey
字段的内容取决于
算法
字段指定的密钥算法

对于RSA,它将是中定义的
RSAPublicKey
结构

RSAPublicKey::=序列{
模数整数,--n
指数整数——e
}
如果您选择的编程语言支持RSA加密,则很可能它提供了一个类或结构或其他特定于语言的方法来读取通用
SubjectPublicKeyInfo
数据,并将其转换为允许访问RSA特定数据的某种表示形式。例如,在Java中

byte[]bytes=javax.xml.bind.DatatypeConverter.parseBase64Binary(“migfma0gcsqgsib3dqebaquaa4gnadcbiqbggqkuko1de7zhzzzzzj6+h0qtjtkvxwtcpvke4ecz0fpqri0cb2jzfj/dgysff6vwwzkjegcjdol5ulsusfncczwbq7rknussmqgkvb1/3j+skzz6utw+5u09lhnsjzzj6qv6q51czzz4bz4g4bjzz4bjbz4bqbjbz4bz4bjbqbjbf4bjbf;
X509EncodedKeySpec genericKeySpec=新X509EncodedKeySpec(字节);
KeyFactory=KeyFactory.getInstance(“RSA”);
PublicKey PublicKey=factory.generatePublic(genericKeySpec);
RSAPublicKeySpec rsaKeySpec=factory.getKeySpec(publicKey,RSAPublicKeySpec.class);
System.out.println(“n=“+rsaKeySpec.getmodule());
System.out.println(“e=“+rsaKeySpec.getPublicExponent());

这是ASN.1
SubjectPublicKeyInfo
结构的DER编码的Base64,在中定义(ASN.1定义参见第4.1节,其他文本描述参见第4.1.2.7节)

SubjectPublicKeyInfo::=序列{
算法识别器,
subjectPublicKey位字符串}
subjectPublicKey
字段的内容取决于
算法
字段指定的密钥算法

对于RSA,它将是中定义的
RSAPublicKey
结构

RSAPublicKey::=序列{
模数整数,--n
指数整数——e
}
如果您选择的编程语言支持RSA加密,则很可能它提供了一个类或结构或其他特定于语言的方法来读取通用
SubjectPublicKeyInfo
数据,并将其转换为允许访问RSA特定数据的某种表示形式。例如,在Java中

byte[]bytes=javax.xml.bind.DatatypeConverter.parseBase64Binary(“migfma0gcsqgsib3dqebaquaa4gnadcbiqbggqkuko1de7zhzzzzzj6+h0qtjtkvxwtcpvke4ecz0fpqri0cb2jzfj/dgysff6vwwzkjegcjdol5ulsusfncczwbq7rknussmqgkvb1/3j+skzz6utw+5u09lhnsjzzj6qv6q51czzz4bz4g4bjzz4bjbz4bqbjbz4bz4bjbqbjbf4bjbf;
X509EncodedKeySpec genericKeySpec=新X509EncodedKeySpec(字节);
KeyFactory=KeyFactory.getInstance(“RSA”);
PublicKey PublicKey=factory.generatePublic(genericKeySpec);
RSAPublicKeySpec rsaKeySpec=factory.getKeySpec(publicKey,RSAPublicKeySpec.class);
System.out.println(“n=“+rsaKeySpec.getmodule());
System.out.println(“e=“+rsaKeySpec.getPublicExponent());

这是ASN.1
SubjectPublicKeyInfo
结构的DER编码的Base64,在中定义(ASN.1定义参见第4.1节,其他文本描述参见第4.1.2.7节)

SubjectPublicKeyInfo::=序列{
算法识别器,
subjectPublicKey位字符串}
subjectPublicKey
字段的内容取决于