2017-03-28 7 views
0

RSAでは、私はpubKeyを知っています。私はpubKeyを使ってjavascriptとjavaのメッセージを暗号化しますが、結果は正しくありません。 JavaScriptコードは以下の通りです:javascriptとjavaは暗号化メッセージにpubKeyを使用します

function getEntryptPwd(pwd){ 
    var pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB"; 
    if(!pwd || !pubKey || !SysConfig.encryptInfo){ 
     return pwd; 
    } 
    var encrypt = new JSEncrypt(); 
    encrypt.setPublicKey(pubKey); 
    return encrypt.encrypt(pwd); 
} 

私はgetEntryptPwd("123456").lengthメソッドを使用し、その結果は、Javaコードは以下である172 です:

 String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB"; 
    KeyFactory keyFactory = KeyFactory.getInstance("RSA"); 
    byte[] encodedKey = Base64.decode(publicKey); 
    PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey)); 

    byte[] encrypt = encrypt(pubKey, "123456".getBytes("utf-8")); 

    System.out.println(new BASE64Encoder().encode(encrypt).length()); 

しかし、出力結果は176 であり必要があります何か間違っている、見つけられない

答えて

0

古いsun.misc.Base64Encoderを使用しているようですが、余分な改行が追加されています。出力を得るにはjava.util.Base64に置き換えてください。172

System.out.println(
     Base64.getEncoder().encodeToString(encrypt).length()); 
関連する問題