zoukankan      html  css  js  c++  java
  • Nodejs 中常见的加密算法:RSA(1)

    Linux用户(以Ubuntu为例)

    $ openssl 进入OpenSSL程序

    OpenSSL> genrsa -out rsa_private_key.pem 1024

    生成私钥

    OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java开发者需要将私钥转换成PKCS8格式

    OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥

    OpenSSL> exit ## 退出OpenSSL程序

    Windows用户在cmd窗口中进行以下操作: C:UsersHammer>cd C:OpenSSL-Win32in

    进入OpenSSL安装目录 C:OpenSSL-Win32in>openssl.exe

    进入OpenSSL程序 OpenSSL> genrsa -out rsa_private_key.pem 1024

    生成私钥 OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

    Java开发者需要将私钥转换成PKCS8格式

    OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥

    OpenSSL> exit ## 退出OpenSSL程序

    https://github.com/reflux/refluxjs/issues/300

    var crypto = require('crypto')
        ,fs = require('fs');
    const padding = crypto.constants.RSA_PKCS1_PADDING;
    
    
    module.exports = {
    	Decrypt: function(data){
    		var publicPem = fs.readFileSync('./pem/rsa_public_key.pem');
    		var pubkey = publicPem.toString();
    		var buf = Buffer.from(data, 'hex');
    		var plaintext = crypto.publicDecrypt({
    		    key: pubkey,
    		    padding: crypto.constants.RSA_PKCS1_PADDING
    		}, buf);
    		return plaintext.toString();
    	},
    	Encrypt: function(data){
    		var privatePem = fs.readFileSync('./pem/rsa_private_key.pem');
    		var key = privatePem.toString();
    		var result = crypto.privateEncrypt({
    		    key: key,
    		    padding: padding
    		}, new Buffer(data,'utf8'));
    		return result.toString('hex');
    	}
    };
    

      

  • 相关阅读:
    转载集合
    TYVJ P1053 字符串的展开 Label:字符 水
    划分数系列问题
    关于inf的问题
    TYVJ P1031 热浪 Label:dijkstra 最短路
    TYVJ P1032 零用钱 Label:贪心
    如何简单形象又有趣地讲解神经网络是什么?知乎
    CString
    利用afxDump来调试自己的程序
    mfc 调试 弹消息
  • 原文地址:https://www.cnblogs.com/shenggen/p/5908707.html
Copyright © 2011-2022 走看看