java - 如何使用 Java 生成电子邮件以获取公钥和私钥

标签 java public-key-encryption

我想得到这样的公钥。 java可以做到吗? 例如我输入姓名、电子邮件和密码。所以java生成它的公钥和私钥。此公钥示例

-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: http://openpgpjs.org
xsBNBFU9xmABCAC/9KabOlwoa+OdFAWkMt9blHeg9dggGCdwrAr66/E+5zqJ
reintA7h7cVphdyOiRvMZjxHK80Osdb0F/3ywHoyPiZtOsBk3NgaCCvKz5ai
8rQzbOg+ge0LAs0/rbH+BWh/6aCOwTAymDVo7QrJedNZsQTtJ1qFRK8qoRkS
nMlG5qjZuRSOAK5sqEAReT3jWGvpcRh2A+IM8RxC02ijxA+57qN0ncahV2E+
0ROCe20mW9Wo2tUONV418UsuZzaGmcfThW6JJPMKeCAeQseV/J/BvcK7NSOi
u6dwBWZqOP1/LTtbFOLoLaeeNSc3KhopuRDpYNCWZej099T/zugJVQ5fABEB
AAHNGktveWFtYSA8aGltaXRzdUB5YWhvby5jb20+wsByBBABCAAmBQJVPcZh
BgsJCAcDAgkQOSpK7V+SVG8EFQgCCgMWAgECGwMCHgEAAG8mCACqAyCglWDU
I/zhq/5PJO7FRuhj3yU93Vju99z+E/0dQzUGgGAYtdzUxhAKk0ny9ZXC3FSa
LboXY8GlgkcmEyzyDKAstLXv7//Se7a1dMcI9yluYLOCNo7z4h0o8MBAg3K2
jU0iPtEqiGBk2+4Iy5Sh0uGoeE6uq0JauL5Uq6P2aZWepf1ZIQrVbFYHcez4
W1JBnGFmb57ovUq1BvRYl5MJQcvqzXpLN8ZE1ZpMw8u3osMljV1Z4DaAd9bu
y+S4gF2Toyz8cr9DUIfyG5i5lh6Pxj7XT3dMeOQa/ZygrtZZt5DP0TDIN3s8
7xSvKFFMym9v9S9B9LsqaMnYig8tX3MBzsBNBFU9xmABCACvxd9JpfiyJZw1
MFr9c/DcUXMkE+pWWWTSybR/5b60BtIWu5mi9IDD3dtcrjiJzBuBYvxHAzS2
AlYM0qEhyDlKhWYKqZW/xGaZcqNUCRCWzG4eplaSOQbJC84n/d2Qg5mebwgO
mtjoJ0C+5TgwkLdYd8TnWtkulqRW5Wsgk1LIZMvAWzQNc8eNR5uLaXbNckK1
PG6/9myBJSKOhJcSg0mHbcleF6egFfthg6tRXTm2EgHTlNnkRUTSDx3OhCT6
DEQDmDo92lAs1ocJrBXUNRCMGgNrsowsi0pvmEJY2eBQkb4syUh7YzfeIdYw
eQo60AwA/yazFqwlZvmUDgMtXcNBABEBAAHCwF8EGAEIABMFAlU9xmIJEDkq
Su1fklRvAhsMAABhOAf9FujFEEv8DfK4wHP3m+VUtOl6TOcK3oDnuw+wO+Jb
VyURM0BktLK4NtCD2q8l8+3W9MaOFQ2nFmf5bnFTghvItRcuMmWJF+vyLlIv
QhfpAPMVjFnQjsVr8fYd3t+kep+Hw2ihPBXaHxyESUxA5QRiRuPs56yLFUK7
horcHsDXl3I8+FyW3iQ2eBgk5+9d97va1ZxjUvNDZDm8fDvBKyRT3As4QBbF
DPI26u+v89EfAI3Q2HZwt08vhu8TkjK2y/wZYT9ihruzDfdR/XXExCwUq/rx
WhaKXDwc9fuqhU9wSNadjKVPytW9vkro9i4PgW7zRy+NepfWNlrP7R9jxLc+
2w==
=wGlq
-----END PGP PUBLIC KEY BLOCK-----

最佳答案

您可以使用 Bouncy CaSTLe Crypto API 来做到这一点,https://www.bouncycastle.org .

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
PrivateKey priv = key.getPrivate();
PublicKey pub = key.getPublic();
String privateKey = new String(Base64.encode(priv.getEncoded(), 0,priv.getEncoded().length, Base64.NO_WRAP));
String publicKey1 = new String(Base64.encode(pub.getEncoded(), 0,pub.getEncoded().length, Base64.NO_WRAP));
String publicKey = new String(Base64.encode(publicKey1.getBytes(),0, publicKey1.getBytes().length, Base64.NO_WRAP));

至于添加姓名、电子邮件和密码等内容,您指的是生成证书,这需要生成 key 对。证书类型因用途而异,生成证书的方法也不同。

如果您希望真正保护通信安全,http://www.amazon.com/Applied-Cryptography-Protocols-Algorithms-Source/dp/0471117099/这是一本重要的读物,因为生成不良的证书和 key 交换比根本没有加密更糟糕。

关于java - 如何使用 Java 生成电子邮件以获取公钥和私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888112/

相关文章:

java - 遇到时间错误(Java)

cross-browser - X.509 数字签名/加密工作流程/库推荐?

ssh - SSH:同时使用私钥选项和端口重定向

java - 集合集无法包含单个对象,如何解决?下面是我的代码,

Java - encodeBase64 方法

java - 是否可以以编程方式将文件从 Android 智能手机发送到计算机/PC?

go - 如何在 GoLang 中分离编码的 ecdsa 公钥和私钥

c# - 通过 C# 使用 Windows Hello 进行 Webauthn 身份验证

python - 使用 PyCrypto 使用 RSA 公钥解密消息

java - Mockito 使用匹配器进行 stub