-1

AndroidのspongycastleでRSAを使用して暗号化/復号化するときに問題が発生しました。enctext には暗号化されたテキストが含まれ、dectext には復号化後のテキストが含まれます。デバッガーでは、dectext はプレーン テキスト メッセージ "test" と一致しますが、smssend(string,string) 関数に文字列として渡されると、不明な形式が表示されます。ここにコードがあります。

{

    byte[] enctext;
    byte[] dectext;
    String message="test";

    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "SC");
    SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SC");
    keyGen.initialize(1024, random);
    KeyPair pair = keyGen.generateKeyPair();
    PrivateKey priv = pair.getPrivate();
    PublicKey pub = pair.getPublic();


    Cipher  rsaCipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding","SC");
    rsaCipher.init(Cipher.ENCRYPT_MODE, pub);
    enctext=rsaCipher.doFinal(message.getBytes());

    Cipher rsaCipher2 = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding","SC");
    rsaCipher2.init(Cipher.DECRYPT_MODE, priv);
    dectext=rsaCipher2.doFinal(enctext);
    sendSMS("5554",dectext.toString());// in debugger dectext shows equivalent "test" values in decimal but when passed as string to sendSMS func it shows some unknown format...

    }

    private void sendSMS(final String phoneNumber,String message)
    {
    }

コードの何が問題なのですか?? フォーマットの問題ですか??どの形式を使用すればよいですか??

4

1 に答える 1

0

それ以外の

dectext.toString()

あなたが使いたい

new String(dectext)

さらに、バイトと文字列の間で変換するときは、エンコーディングを明示的に指定する必要があります。

message.getBytes("UTF-8")
new String(dectext, "UTF-8")
于 2014-01-26T06:14:43.457 に答える