在Android中,我使用下面的代码将String转换为RSA私钥
https://www.devglan.com/online-tools/rsa-encryption-decryption
但是,当我使用这个网站时,我的代码不起作用。
https://8gwifi.org/RSAFunctionality?keysize=1024
我在Android studio中的代码是:
public static PrivateKey stringToPrivateKey(String privateKeyString)
{
try {
if (privateKeyString.contains("-----BEGIN PRIVATE KEY-----") || privateKeyString.contains("-----END PRIVATE KEY-----"))
privateKeyString = privateKeyString.replace("-----BEGIN PRIVATE KEY-----", "").replace("-----END PRIVATE KEY-----", "");
if (privateKeyString.contains("-----BEGIN RSA PRIVATE KEY-----") || privateKeyString.contains("-----END RSA PRIVATE KEY-----"))
privateKeyString = privateKeyString.replace("-----BEGIN RSA PRIVATE KEY-----", "").replace("-----END RSA PRIVATE KEY-----", "");
privateKeyString.trim();
privateKeyString = privateKeyString.replaceAll("\\s+","");
privateKeyString = privateKeyString.replaceAll("\\r+","");
privateKeyString = privateKeyString.replaceAll("^ | $|\\n ", "");
byte[] keyBytes = Base64.decode(privateKeyString, Base64.DEFAULT);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
return keyFactory.generatePrivate( spec);
} catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
e.printStackTrace();
}
}
与第二个链接错误是在这一行
钥匙工厂。发电机驱动(spec);
这段代码解决了我的问题:
void dear(String publicKeyB64) throws NoSuchAlgorithmException, InvalidKeySpecException{
if (publicKeyB64.contains("-----BEGIN PUBLIC KEY-----") || publicKeyB64.contains("-----END PUBLIC KEY-----"))
publicKeyB64 = publicKeyB64.replace("-----BEGIN PUBLIC KEY-----", "").replace("-----END PUBLIC KEY-----", "");
if (publicKeyB64.contains("-----BEGIN RSA PUBLIC KEY-----") || publicKeyB64.contains("-----END RSA PUBLIC KEY-----"))
publicKeyB64 = publicKeyB64.replace("-----BEGIN RSA PUBLIC KEY-----", "").replace("-----END RSA PUBLIC KEY-----", "");
// ok, you may need to use the Base64 decoder of bouncy or Android instead
try{
byte[] decoded = Base64.decode(publicKeyB64, Base64.DEFAULT);
org.bouncycastle.asn1.pkcs.RSAPublicKey pkcs1PublicKey = org.bouncycastle.asn1.pkcs.RSAPublicKey.getInstance(decoded);
BigInteger modulus = pkcs1PublicKey.getModulus();
BigInteger publicExponent = pkcs1PublicKey.getPublicExponent();
RSAPublicKeySpec keySpec = new RSAPublicKeySpec(modulus, publicExponent);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey generatedPublic = kf.generatePublic(keySpec);
uk =generatedPublic;
//uk is public variable in class and means public key
}
catch (Exception e){
Log.i("your log","errro in dear function");
}
}
这是我的图书馆:
编译“org.bounchycastle:bcprov-jdk15on:1.58”
编译"org.bouncycastle: bcpkix-jdk15on: 1.58"
问题内容: 我有一个字符串。我希望它成为“ Uri”,这样我就可以与 如何将Songchoice转换为Uri? 问题答案: 这是文档http://developer.android.com/reference/android/net/Uri.html#parse%28java.lang.String%29
我想将字符串转换为int。 例如: 如果是,则应将其转换为与相同的 为什么我需要这个。因为我要将unicode int转换为表情符号,所以我使用的是这段代码。 你能让我知道我该怎么做吗?
让我先解释一下我的问题。我从CA购买了一个证书,并使用以下格式生成csr和私钥: 有趣的是,在aws文档页面上,他们显示的示例私钥以“------开始RSA私钥-------”开头 有没有办法使用OpenSSL将我的私钥转换为RSA私钥?
我有以下字符串格式的RSA私钥。 我正在尝试使用下面的代码片段将其转换为PrivateKey类型- 我正在犯错误- 它给我一个错误的生成私人方法。 尝试在这里使用Java的答案:将DKIM私钥从RSA转换为用于JavaMail的DER
我有一个OpenSSH格式的私钥文件: 但我需要RSA格式: 在终端我会这样做: 但我需要用Java来做。 我尝试使用org.bouncycastle.openssl.PEMWriter,但我无法解决如何将我的输入键(作为输入字符串)转换为可传递给PEMWriter的Private ateKey对象。
我正在尝试转换一个表示存储在SQLite中的日期的字符串。 日期存储到sqlite中,如下所示: 根据Java文档,方法: 返回此日期的字符串表示形式。格式设置相当于使用具有格式字符串“eee MMM dd hh:mm:ss zzz yyyy”的SimpleDateFormat,看起来类似于“tue Jun 22 13:07:00 PDT 1999”。则使用当前默认时区和区域设置。如果需要控制时区