.Net Core中使用NodeJs加解密DES,MD5,AES,REA
鉴于使用.net core我们的加解密也同时迁移到了跨平台上,我使用的是NodeJs加解密的。废话不多说了,还是来干活吧。
1.创建Node项目
2.添加package.json
{
"name": "node-encrpty",
"version": "0.0.0",
"description": "NodeEncrpty",
"main": "app.js",
"author": {
"name": "tl"
},
"dependencies": {
"crypto": "0.0.3"
}
}
红字标准的是要使用的npm包。
--------------------
已下是NodeJs核心代码了。
var crypto = require('crypto');
var fs = require('fs');
module.exports = {
Md5encrypt: function(callback, content) {
var md5 = crypto.createHash('md5');
md5.update(content);
var result = md5.digest('hex').toUpperCase();
callback(null, result);
//return result;
},
DESencrypt: function(callback, plaintext, key) {
var ecb = 'DES';
var enkey = new Buffer(key);
var iv = key;
var eniv = new Buffer(iv ? iv : 0, 'binary');
var cipher = crypto.createCipheriv(ecb, enkey, eniv);
cipher.setAutoPadding(true) //default true
var ciph = cipher.update(plaintext, 'utf8', 'base64');
ciph += cipher.final('base64');
callback(null, ciph);
//return ciph;
},
DESdecrypt: function(callback, encrypt_text, key) {
var ecb = 'DES';
var dekey = new Buffer(key);
var iv = key;
var deiv = new Buffer(iv ? iv : 0, 'binary');
var decipher = crypto.createDecipheriv(ecb, dekey, deiv);
decipher.setAutoPadding(true);
var txt = decipher.update(encrypt_text, 'base64', 'utf8');
txt += decipher.final('utf8');
callback(null, txt);
//return txt;
},
RSAencrypt: function(callback, plaintext, key) {
var data = new Buffer(plaintext);
var result = crypto.publicEncrypt({ key: key, padding: crypto.constants.RSA_PKCS1_PADDING }, data).toString('base64');
callback(null, result);
//return result;
},
RSAdecrypt: function(callback, encrypt_text, key) {
var data = new Buffer(encrypt_text, 'base64');
var result = crypto.privateDecrypt({ key: key, passphrase: '123456', padding: crypto.constants.RSA_PKCS1_PADDING }, data).toString('utf8');
callback(null, result);
//return result;
},
AESencrypt: function(callback, plaintext, key) {
var ecb = 'aes-128-ecb';
var clearEncoding = 'utf8';
var iv = "";
var cipherEncoding = 'base64';
var cipher = crypto.createCipheriv(ecb, key, iv);
var cipherChunks = [];
cipherChunks.push(cipher.update(plaintext, clearEncoding, cipherEncoding));
cipherChunks.push(cipher.final(cipherEncoding));
var result = cipherChunks.join('');
callback(null, result);
//return result;
},
AESdecrypt: function(callback, encrypt_text, key) {
iv = "";
var clearEncoding = 'utf8';
var cipherEncoding = 'base64';
var cipherChunks = [];
var decipher = crypto.createDecipheriv('aes-128-ecb', key, iv);
decipher.setAutoPadding(true);
cipherChunks.push(decipher.update(encrypt_text, cipherEncoding, clearEncoding));
cipherChunks.push(decipher.final(clearEncoding));
var result = cipherChunks.join('');
callback(null, result);
//return result;
}
}
3.使用属性注入类
public NodeEncrpty Cryptor { get; set; }
//RSA
Cryptor.RSAdecrypt(model.EncryptKey).Result;
//AES
Cryptor.AESdecrypt(Data, AesKey).Result;
//MD5
Cryptor.MD5encrypt(data).Result;
//DES
Cryptor.DESencrypt(data,Des_Key).Result;
好了以上就是NodeJs的加密方法了,请大家多多指教。
最新文章
- Android 5.0源码编译问题
- (HDU 5558) 2015ACM/ICPC亚洲区合肥站---Alice's Classified Message(后缀数组)
- 全选、取消、2级 checkbox的选中切换
- ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))
- 第三方Jar上传到Nexus3
- 根据username查找user
- HDU 4389——X mod f(x)(数位DP)
- [置顶] Hibernate的一个经典异常
- Panel( 面板) 组件 上
- AngularJS 基础教程二:
- 2016 Multi-University Training Contest 5&;6 总结
- pywebkitgtk安装出现的问题
- HDU 5045 Contest(状压DP)
- poj 3662 Telephone Lines
- [js高手之路]原型式继承与寄生式继承
- node.js 的热更新
- word embeddding和keras中的embedding
- 【CSS学习】--- overflow属性
- LoadRunner11录制脚本出现的问题
- 动态规划入门——数字三角形(Java)
热门文章
- PHP 根据对象属性进行对象数组的排序(usort($your_data, ";cmp";);)(inside the class: usort($your_data, array($this, ";cmp";)))
- Android菜鸟的成长笔记(25)——可爱的小闹钟
- GTID的限制
- 通过getElementById来取得Form里的表单元素
- 设置非ARC
- Cocos2d-x 脚本语言Lua基本语法
- URLDecoder和URLEncoder的使用总结
- rac下一个/tmp/bootstrap权限问题
- 详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)
- Linux在出现/java: cannot execute binary file