www.91084.com

GVKun编程网logo

在Android中将PEM转换为PublicKey(pem转换为privatekey)

15

如果您对在Android中将PEM转换为PublicKey感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于在Android中将PEM转换为PublicKey的详细内容,我们还

如果您对在Android中将PEM转换为PublicKey感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于在Android中将PEM转换为PublicKey的详细内容,我们还将为您解答pem转换为privatekey的相关问题,并且为您提供关于Android PublicKey为字符串、Android-如何在Android中将字符串转换为utf-8、EC将字符串转换为PublicKey / PrivateKey、java – Android – 如何在android中将String转换为utf-8的有价值信息。

本文目录一览:

在Android中将PEM转换为PublicKey(pem转换为privatekey)

在Android中将PEM转换为PublicKey(pem转换为privatekey)

我已经看到了许多类似的问题,但对我而言,没有任何效果。我只是想将从服务器检索到的PEM格式的RSA公钥转换为PublicKeyAndroid中的。谁能指出我正确的方向?

编辑:我已经成功使用以下代码将PEM转换为PublicKey,但是在编码消息后,我得到了意外的输出…

 public PublicKey getFromString(String keystr) throws Exception    {        // Remove the first and last lines        String pubKeyPEM = keystr.replace("-----BEGIN PUBLIC KEY-----\n", "");        pubKeyPEM = pubKeyPEM.replace("-----END PUBLIC KEY-----", "");        // Base64 decode the data        byte [] encoded = Base64.decode(pubKeyPEM);        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encoded);        KeyFactory kf = KeyFactory.getInstance("RSA");        PublicKey pubkey = kf.generatePublic(keySpec);        return pubkey;    }    public String RSAEncrypt(final String plain) throws NoSuchAlgorithmException, NoSuchPaddingException,            InvalidKeyException, IllegalBlockSizeException, BadPaddingException, IOException {        if (pubKey!=null) {            cipher = Cipher.getInstance("RSA");            cipher.init(Cipher.ENCRYPT_MODE, pubKey);            encryptedBytes = cipher.doFinal(plain.getBytes());            Log.d("BYTES", new String(encryptedBytes));            return Hex.encodeHexString(encryptedBytes);        }        else            return null;    }

输出如下所示:

b6813f8791d67c0fa82890d005c8ff554b57143b752b34784ad271ec01bfaa9a6a31e7ae08444baef1585a6f78f3f848eecb1706bf7b2868fccefc9d728c30480f3aabc9ac5c3a9b4b3c74c2f7d6f0da235234953ea24b644112e04a2ec619f6bf95306ef30563c4608ec4b53ed7c15736d5f79c7fa1e35f2444beb366ae4c71

当我期望更接近:

JfoSJGo1qELUbpzH8d4QXtafup+J2F9wLxHCop00BQ4YS0cRdRCKDfHpFPZQYjNeyQj00HwHbz+vj8haTPbpdqT94AHAl+VZ+TPAiUw1U5EXLLyy4tzbmfVI7CwvMm26lwB4REzYUZdedha1caxMEfxQ5duB+x4ol9eRZM/savg=

我缺少某些格式或文件类型吗?

答案1

小编典典

要回答我自己的问题…第一个输出为十六进制,第二个输出为base64。只需将return语句更改为 return newString(Base64.encode(encryptedBytes)); ,您会很好!

Android PublicKey为字符串

Android PublicKey为字符串

我试图将PublicKey转换为String但我不知道如何正确地执行它.下面的代码没有给我正确的密钥,那么如何转换呢?

byte[] publicKeyBytes = userKeys.getPublic().getEncoded();
String pKstring = new String(publicKeyBytes);

解决方法:

我找到解决方案,下面的代码是正确的:

byte[] publicKeyBytes = Base64.encode(userKeys.getPublic().getEncoded(),0);
String pubKey = new String(publicKeyBytes);

Android-如何在Android中将字符串转换为utf-8

Android-如何在Android中将字符串转换为utf-8

我无法在Android中将字符串转换为UTF-8。请帮我!!

s1=URLEncoder.encode("臺北市")

结果: %EF%BF%BDO%EF%BF%BD_%EF%BF%BD%EF%BF%BD

但是“ 臺北市”应该编码为“ %E8%87%BA%E5%8C%97%E5%B8%82

EC将字符串转换为PublicKey / PrivateKey

EC将字符串转换为PublicKey / PrivateKey

如何解决EC将字符串转换为PublicKey / PrivateKey?

我一直在尝试将下面粘贴的代码转换为公钥。我正在尝试创建一个共享机密。我有密钥的未压缩十六进制表示形式。我想从中创建一个公钥。同样,我也希望创建私钥并在之后加入它们。

String plainPublicKey = "042E3E5CCF6B9AB04BE7A22F3FACCFDE73C87E87155394A34815408A896CA18A374DAC669AF3BF6220FC863767F4AF47507C5BC221FC4A19874DAF39B4074E3EB8";
        EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(Hex.decodeHex(plainPublicKey.tochararray()));
        KeyFactory kf = KeyFactory.getInstance("EC");
        PublicKey pub = kf.generatePublic(publicKeySpec);
        return pub;
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
    at jdk.crypto.ec/sun.security.ec.ECKeyFactory.engineGeneratePublic(ECKeyFactory.java:157)
    at java.base/java.security.KeyFactory.generatePublic(KeyFactory.java:352)
    at AESExample.getPublicKey(AESExample.java:66)
    at AESExample.main(AESExample.java:74)
Caused by: java.security.InvalidKeyException: invalid key format
    at java.base/sun.security.x509.X509Key.decode(X509Key.java:386)
    at java.base/sun.security.x509.X509Key.decode(X509Key.java:401)
    at jdk.crypto.ec/sun.security.ec.EcpublicKeyImpl.<init>(EcpublicKeyImpl.java:71)
    at jdk.crypto.ec/sun.security.ec.ECKeyFactory.implGeneratePublic(ECKeyFactory.java:219)
    at jdk.crypto.ec/sun.security.ec.ECKeyFactory.engineGeneratePublic(ECKeyFactory.java:153)
    ... 3 more

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

java – Android – 如何在android中将String转换为utf-8

java – Android – 如何在android中将String转换为utf-8

我无法在 Android中将String转换为UTF-8.请帮我!!
s1=URLEncoder.encode("臺北市")

结果: O _

但“台北市”应编码为“台北市”

解决方法

在 http://developer.android.com/reference/java/net/URLEncoder.html中,您可以读取您使用的已弃用,并且您应该使用静态字符串编码(String s,String charsetName)

所以URLEncoder.encode(“台北市”,“utf-8”)应该可以解决问题.

关于在Android中将PEM转换为PublicKeypem转换为privatekey的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android PublicKey为字符串、Android-如何在Android中将字符串转换为utf-8、EC将字符串转换为PublicKey / PrivateKey、java – Android – 如何在android中将String转换为utf-8等相关知识的信息别忘了在本站进行查找喔。

本文标签: