2017-02-10 1 views
1

안녕 모두를 던졌습니다 : 나는 다음과 같은 라인에 의한 개인 - 공개 키 쌍을 생성하는 NodeRSA을 사용하고 있습니다 :노드 암호 createDecipheriv는 잘못된 키 길이 오류를

const key = new nodeRSA(); 
key.generateKeyPair(2048, 65537); 

을 그리고 머리글과 바닥 글과 \n, 한 쌍을 제거한 후

,536,913 :
//only for demo 
"publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlJ3PpWq77KY+tFccFfH4bO65Nu82LyzX0FxYGZ/QaF+LuZqeXEErXUO5iJ3P+hPRtiHUEHr9d5mfqStA/DnXxBbFmbwatNE8ncu4pSBOr9pbUyt22BRVkaiBBN0IuzBwo4ZWNrsON7IolVJnh8BKyurO5r7uj3aa8Yz0wcwIIkgais967iFWoj8YyeMSXpqUuMQu4mvcWB0EY/+wJNQnlSf7WuoJaTtzPzLe0qBaGnYO01ASxeOgPRzAJJ8prz2xZ5xy1nW+w+88XHVQsQizJ32B5Mzw7CpAeKIAnhlMVs8gVVc7iCfiwLoMiZXSReNxl2WfIYbHpaH2e6kPZoYNLQIDAQAB", 


"privateKey": "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCUnc+larvspj60VxwV8fhs7rk27zYvLNfQXFgZn9BoX4u5mp5cQStdQ7mInc/6E9G2IdQQev13mZ+pK0D8OdfEFsWZvBq00Tydy7ilIE6v2ltTK3bYFFWRqIEE3Qi7MHCjhlY2uw43siiVUmeHwErK6s7mvu6PdprxjPTBzAgiSBqKz3ruIVaiPxjJ4xJempS4xC7ia9xYHQRj/7Ak1CeVJ/ta6glpO3M/Mt7SoFoadg7TUBLF46A9HMAknymvPbFnnHLWdb7D7zxcdVCxCLMnfYHkzPDsKkB4ogCeGUxWzyBVVzuIJ+LAugyJldJF43GXZZ8hhselofZ7qQ9mhg0tAgMBAAECggEBAI3lt9Mq+89SU+CAo7JYXGg17uYCtGuKl2y8Huooayacw54tgTJ4jtz3wvgsJd2SetM5rW8m30gIiCdPwzaQS/FQBM9qiN1IQmYvk1cmZ7sD89qPT2O01pbCmp14JdQExid8JmkPZN3M327jRTKaaU8hrvcmKkUUa5Bik3dORh3j3od21KVzkDc4ZlI8pPggBWM9bXPOMCd2cPYHBRnBvyo7RG5C1SjV3qlUC4xnbzh6MN/rMWTLQYJu8czZhmonPdLzNZVDFW0wQM+sRHeiXTx/8U0kSZ41iFLvqGxchD9jOvPhC1vzSLh2Ziq6I/mIat6hKjSZoqIq9YHZAgRlxQECgYEA3y9Un4woKgGOmQqFuiJxiYLusR7oEoYnvd5wXDzlddLDYb7SALBya73W6Z+gtYlBw6OEAmSsPGZW0432lMIasvyvdrl1lKgORoTktIBYRnu05LNCwzHxTFhYB1rLyf6A0s110i+mVeAgT5weoB1J1uK1qSvKNNuXkAokduhCwCECgYEAqne6VbtOlSllofrOH+3qwPu+j8SYqV7a5vNNFlr/LY7NPazasZLIS4MEb6uTyxcDFGny04+IpbU1Gr7rEwAtp8yHPmeJ7WDwU6LdyxVbWXSW0TqEdtnI/iwOIYDhBowFLRdwbunvkzpU1QlIwikSrz03nr7f9wxDAblbRoqm240CgYEAs60uCnhSiWbRf0HqYOyDzTn8odmI6gjZC9F9UbSw4oc4RoPSGz3yD+04jMK3Jg8HQ9JrX2XfB404T36VyjLuPbSSKhmqoHAfdgRc/zfoWW4UNp5enDij01u4GsutDsR2v78rIHi+B5q1SIIeYbbSkE3aBAS9+Ink3dBchOH9gyECgYBA8FdVrYMkI58J88duNm5FkiFoF1aovu/ZJzpol8W6Dzp0klLFbstKqOCZwd0NcvjDYBEXMwi1R7CxPaXDmT/LOokS5tKOUW18DwE7CinAjD+f+RDZTeHZoeLINJaErfaS1OkJ96hCh+glN+I1xPvPMhzsJn6fWFZ2Y6w31T33SQKBgQDFbYrJJSqScJFG/whQSCKBZSiyT5wJ0UE2VWuy9SiX+4YAJ+NVCSSVQIfwxrWkDjkcgiEv1mBxR4lgAnzI9TNu7APiBilHb3oRyNnfbLqsZ7q1lqsAlzqGFiXEQk3DbTEaVDgwBu5izyRhQLAmhdPOhisMVy1P8T7Hfsx7T/peEg==" 

가 나는 다음과 같은 라인에 의해 (버퍼로 변환) 일부 데이터를 암호화하고 나중에 위의 개인 키로 복호화하기 위해 위의 공개 키를 사용합니다 다음과 같습니다 63,210

// ivBuf is the buffer of initialization vector 
crypto.createDecipheriv('aes-256-gcm', privateKeyBuf, ivBuf); 
그러나 노드 암호는 불평 :

crypto.js:235 
    this._handle.initiv(cipher, toBuf(key), toBuf(iv)); 
      ^

Error: Invalid key length 
    at Error (native) 
    at new Decipheriv (crypto.js:235:16) 
    at Object.Decipheriv (crypto.js:232:12) 

질문은 다음과 같습니다 키 아이폰에가 유효하지 않은 이유는 무엇입니까?

감사합니다.

+1

RSA 키를 사용하여 AES 해독을 작성하고 있습니다. 질문에 AES 키를 언급하는 것을 잊었거나 잘못된 방법을 사용하고 있습니다. 아마도 당신은'crypto.privateDecrypt (private_key, buffer)'가 필요합니다. – pedrofb

+0

@pedrofb 네, 맞습니다. 나는 잘못 생각했습니다.하지만 이미 해결 됐습니다. 곧 질문을 삭제할 것입니다. – leonsPAPA

답변

0

암호화 모듈에서 사용하는 기본 문자열 인코딩이 바이너리에서 utf8로 변경되었습니다. 따라서 바이너리 문자열은 utf8로 해석되고 해당 변환 프로세스 동안 16 바이트보다 커질 가능성이 큽니다