簡體   English   中英

在節點中讀取Java生成的公鑰

[英]Read Java generated public key in node

我有一個用Java生成的公鑰的字節,如下所示:

package test;

import java.io.IOException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.util.Base64;

public class Test {

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
         KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
         //generator.initialize(dsabits, sr);
         KeyPair keyPair = generator.generateKeyPair();
         PublicKey publicKey = keyPair.getPublic();

         byte[] encodedBytes = Base64.getEncoder().encode(publicKey.getEncoded());
         System.out.println("decodedBytes " + new String(encodedBytes));
    }

}

=> decodedBytes MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJQz9HgPKzGi + jT5uZ7CEU8mQyNZXm1IpPBIaMGZ2IW54iv + ptVAI8lG9mRNPTyZf07GZNnDSp5RcAn19lUh6eBxZ6R + Yg78rjw4UFfuGQPe8pKrAsy0ESOxLJrh2iQpa4H1DQ86Jq1kSUGFBMCpk68RyT + yQGwBCO8yomqp + 7HQIDAQAB

現在我需要使用此publick鍵加密節點中的字符串。 我試過了

var crypto = require("crypto");
var pubKeyB64 = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJQz9HgPKzGi+jT5uZ7CEU8mQyNZXm1IpPBIaMGZ2IW54iv+ptVAI8lG9mRNPTyZf07GZNnDSp5RcAn19lUh6eBxZ6R+Yg78rjw4UFfuGQPe8pKrAsy0ESOxLJrh2iQpa4H1DQ86Jq1kSUGFBMCpk68RyT+yQGwBCO8yomqp+7HQIDAQAB';

var pubKey = Buffer.from(pubKeyB64, 'base64');

var toEncrypt = 'ciao';
var buffer = new Buffer(toEncrypt);
var encrypted = crypto.publicEncrypt(pubKey, buffer);
console.log(encrypted.toString("base64"));

但不幸的是我得到了

錯誤:錯誤:0906D06C:PEM例程:PEM_read_bio:無起始行

我無法控制公鑰生成格式,不幸的是我必須使用我在那里的內容。 有沒有辦法在節點中使用此密鑰以某種方式加密字符串?

假設你的意思是https://nodejs.org/api/crypto.html#crypto_crypto_publicencrypt_key_buffer它說它想要一個字符串

PEM編碼的公鑰或私鑰。

要創建PEM編碼,而不是將base64轉換為二進制,將其分成64個字符的塊,除了最后一個后面跟一個換行符,放一行-----BEGIN PUBLIC KEY-----加上換行符開頭和一行-----END PUBLIC KEY-----加上最后的換行符。

我可以在Java端對此進行編碼,但是你說你不能改變它,我不知道有足夠的js來編碼nodejs,所以為其他人設置CW。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM