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');
    	}
    };
    

      

  • 相关阅读:
    [Swift]todoList压栈
    Backtrack下的dns爆破工具的目录
    Linux如何设置dns
    预防黑客入侵 防黑必学的cmd命令vs网络安全
    SSL协议详解
    CDN(内容分发网络)技术原理
    社工数据搜索引擎搭建
    实战 SSH 端口转发
    Sublime Text编辑器如何隐藏顶部的菜单栏
    Sublime Text 2 -Sidebar 背景色调整为黑色
  • 原文地址:https://www.cnblogs.com/shenggen/p/5908707.html
Copyright © 2011-2022 走看看