创建用户友好的公钥/私钥对

时间:2014-11-18 12:20:22

标签: c# .net cryptography rsa bouncycastle

我正在创建一个API,它将使用公钥/私钥对来验证用户身份。
我一直在使用.NET RSACryptoServiceProvider和BouncyCastle库来创建这些对。
它有效,但输出远非用户友好。这些键包含各种符号,如+ - / =。

我使用了几个生成公钥/私钥的API服务,这些键总是非常整洁,只有数字和字母。

那么如何创建更多用户友好/读者友好的密钥对?这是我目前正在使用的BouncyCastle代码:

var r = new RsaKeyPairGenerator();
r.Init(new KeyGenerationParameters(new SecureRandom(), keySizeInBits));
var keys = r.GenerateKeyPair();

AsymmetricCipherKeyPair pair = GenerateKeys(64);            
PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(pair.Private);
byte[] serializedPrivateBytes = privateKeyInfo.ToAsn1Object().GetDerEncoded();
txtPrivateKey.Text = Convert.ToBase64String(serializedPrivateBytes);

SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public);
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded();
txtPublicKey.Text = Convert.ToBase64String(serializedPublicBytes);

这是一个示例输出:

MCAwDQYJKoZIhvcN+A+Q+EB/BQADDwAwD/+AIFAMpTPYUCAwEAAQ==


编辑:我添加了一张图片来说明。这是来自cryptocoin交换。
(显然这些密钥不再有效)。
要使用API​​,您必须使用公钥和私钥加密数据,并使用POST发送。
我已经看到许多API受到这样的保护,它们都使用类似的,“漂亮”的公钥/私钥。

Example: Cryptsy.com website

0 个答案:

没有答案