我是加密中的新手,可能我在问一个愚蠢的问题,但我一直无法找到答案。我在POC Android项目中使用Java生成RSA密钥。我的目的是用公钥加密用户密码并使用服务器中的私钥解密,同时这也将允许我以更安全的方式将密码保存在设备中(加密),然后自动使用它使用指纹验证。我生成与常规的Java方法的关键:生成的RSA公钥和私钥模数在Java/Android中是相同的
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
PublicKey publicKey = key.getPublic();
PrivateKey privateKey = key.getPrivate();
然后我只需登录两个键到Android工作室logcat的是这样的:
Log.e(TAG, "Public key: " + publicKey);
Log.e(TAG, "Private key: " + privateKey);
...这是我得到什么记录:
10-18 15:27:17.570 22426-22426/cliu.tutorialcrypto E/AsymmetricAlgorithmRSA: Public key: OpenSSLRSAPublicKey{modulus=c1312eb5c24da9577dd40263cec233b8be40ed227b81df3c442363f1dfd5364e9e2ba96d4dd7c1011d2633d6603beb1a483b75b8af8a87b10ebe918729b6afe95893d5c93b3f99727785110f2373d20ced8bfe2421c9c682ee737c60a7c6199be3d2e7e4687d69cedc50965b8cebc4445cdfe7a13a7df5eda6a6d4304d057505,publicExponent=10001}
10-18 15:27:17.570 22426-22426/cliu.tutorialcrypto E/AsymmetricAlgorithmRSA: Private key: OpenSSLRSAPrivateCrtKey{modulus=c1312eb5c24da9577dd40263cec233b8be40ed227b81df3c442363f1dfd5364e9e2ba96d4dd7c1011d2633d6603beb1a483b75b8af8a87b10ebe918729b6afe95893d5c93b3f99727785110f2373d20ced8bfe2421c9c682ee737c60a7c6199be3d2e7e4687d69cedc50965b8cebc4445cdfe7a13a7df5eda6a6d4304d057505,publicExponent=10001}
问题:为什么生成的密钥中的两个模都相等?我认为这是不够安全的,因为只有公钥模数的人可以很容易地拿出私钥,对吗?