RSA密钥getEncoded编码转16进制字符后的长度大小?

ricki 发布于 2013/09/15 09:17
阅读 1K+
收藏 0

之前是生成RSA密钥对象文件,现如今想把密钥编码存放到数据库中,但发现公钥编码后的16进制字符长度为固定的324,而私钥未必如此,跟secrand.setSeed(corpName.getBytes());传入的参数的不同而不同,目前看到最大的也就是1270,不清楚会不会出现更长的。

部分代码如下:
生产密钥对函数的代码:
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",getProvider());   
final int KEY_SIZE = 1024;// 
SecureRandom secrand=new SecureRandom();
secrand.setSeed(test.getBytes()); //teste为传入的参数
keyPairGen.initialize(KEY_SIZE, secrand);   
KeyPair keyPair = keyPairGen.generateKeyPair();   

测试代码(rsap2为私钥,rsap1为公钥):
System.out.println(new BigInteger(rsap2.getEncoded()).toString(16).length());
System.out.println(rsap2.getModulus().toString(16).length());
System.out.println(rsap2.getPrivateExponent().toString(16).length());
     
System.out.println(new BigInteger(rsap1.getEncoded()).toString(16).length());
System.out.println(rsap1.getModulus().toString(16).length());
System.out.println(rsap1.getPublicExponent().toString(16).length());
测试运行结果:
rsap2.getEncoded()).toString(16).length():1266
rsap2.getModulus().toString(16).length():256
rsap2.getPrivateExponent().toString(16).length():256
new BigInteger(rsap1.getEncoded()).toString(16).length():324
rsap1.getModulus().toString(16).length():256
rsap1.getPublicExponent().toString(16).length():5

其中rsap2.getEncoded()).toString(16).length()会根据test的不同会有所不同,但其他固定不变?

请问这编码后的长度如何得知?一般都为多大?

加载中
0
r
ricki
没人能够回答吗?哎。。。还是问题太简单了。。。???
返回顶部
顶部