Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. const NodeRSA = require('node-rsa');
  2. const fs = require('fs');
  3.  
  4. var key;
  5.  
  6. var generate = function () {
  7. key = new NodeRSA();
  8. key.generateKeyPair(2048, 65537);
  9. fs.writeFileSync('./keys/public-key.pem', key.exportKey('pkcs8-public-pem'));
  10. };
  11.  
  12. var encrypt = function (message) {
  13. let encrypted = key.encrypt(message, 'base64');
  14. return encrypted;
  15. };
  16.  
  17. var decrypt = function (cipherText) {
  18. let decrypted = key.decrypt(cipherText, 'utf8');
  19. return decrypted;
  20. }
  21.  
  22. module.exports.generate = generate;
  23. module.exports.test = test;
  24. module.exports.encrypt = encrypt;
  25. module.exports.decrypt = decrypt;
  26.  
  27. const express = require('express');
  28. const rsaWrapper = require('./components/rsa-wrapper.js');
  29. const app = express();
  30. const fs = require('fs');
  31.  
  32. app.listen(3000);
  33.  
  34. app.get('/', function(req, res) {
  35. console.log('Working');
  36. res.render('index.ejs');
  37. });
  38.  
  39. app.get('/generate', function(req, res) {
  40. rsaWrapper.generate();
  41. console.log('The keys have been generated successfully.');
  42. res.render('index.ejs');
  43. });
  44.  
  45. app.get('/decrypt', function(req, res) {
  46. fs.readFile('./cipher-text.txt', (err, data) => {
  47. if (err) throw err;
  48. console.log('The original message is:' + rsaWrapper.decrypt(data));
  49. });
  50. res.render('index.ejs');
  51. });
  52.  
  53. static void Main(string[] args) {
  54. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  55. RSAParameters rsaParam = rsa.ExportParameters(false);
  56. String publicKey = File.ReadAllText(@"D:NodeProjectsTest projectkeyspublic-key.pem").Replace("-----BEGIN PUBLIC KEY-----", "").Replace("-----END PUBLIC KEY-----", "");
  57. publicKey = publicKey.Replace("n", String.Empty);
  58. publicKey = publicKey.Replace("r", String.Empty);
  59. publicKey = publicKey.Replace("t", String.Empty);
  60. rsaParam.Modulus = Convert.FromBase64String(publicKey);
  61. byte[] intBytes = BitConverter.GetBytes(65537);
  62. if (BitConverter.IsLittleEndian)
  63. Array.Reverse(intBytes);
  64. rsaParam.Exponent = intBytes;
  65. rsa.ImportParameters(rsaParam);
  66.  
  67. string msg = ".";
  68. byte[] encrypted = rsa.Encrypt(Encoding.UTF8.GetBytes(msg), true);
  69. string cipherText = Convert.ToBase64String(encrypted);
  70.  
  71. File.WriteAllText(@"D:NodeProjectsTest projectcipher-text.txt", cipherText);
  72.  
  73. Console.WriteLine(publicKey);
  74. Console.WriteLine(cipherText);
  75. Console.ReadLine();
  76. }
  77.  
  78. const rsaWrapper = {};
  79. const fs = require('fs');
  80. const NodeRSA = require('node-rsa');
  81. const crypto = require('crypto');
  82.  
  83. // load keys from file
  84. rsaWrapper.initLoadServerKeys = () => {
  85. rsaWrapper.serverPub = fs.readFileSync('./keys/public-key.pem');
  86. rsaWrapper.serverPrivate = fs.readFileSync('./keys/private-key.pem');
  87. };
  88.  
  89. rsaWrapper.generate = () => {
  90. let key = new NodeRSA();
  91. key.generateKeyPair(2048, 65537);
  92. fs.writeFileSync('./keys/private-key.pem', key.exportKey('pkcs8-private-pem'));
  93. fs.writeFileSync('./keys/public-key.pem', key.exportKey('pkcs8-public-pem'));
  94.  
  95. return true;
  96. };
  97.  
  98. rsaWrapper.serverExampleEncrypt = () => {
  99. console.log('Server public encrypting');
  100.  
  101. let enc = rsaWrapper.encrypt(rsaWrapper.serverPub, 'Server init hello');
  102. console.log('Encrypted RSA string ', 'n', enc);
  103. let dec = rsaWrapper.decrypt(rsaWrapper.serverPrivate, enc);
  104. console.log('Decrypted RSA string ...');
  105. console.log(dec);
  106. };
  107.  
  108. rsaWrapper.encrypt = (publicKey, message) => {
  109. let enc = crypto.publicEncrypt({
  110. key: publicKey,
  111. padding: crypto.RSA_PKCS1_OAEP_PADDING
  112. }, Buffer.from(message));
  113. return enc.toString('base64');
  114. };
  115.  
  116. rsaWrapper.decrypt = (privateKey, message) => {
  117. let enc = crypto.privateDecrypt({
  118. key: privateKey,
  119. padding: crypto.RSA_PKCS1_OAEP_PADDING
  120. }, Buffer.from(message, 'base64'));
  121.  
  122. return enc.toString();
  123. };
  124.  
  125. module.exports = rsaWrapper;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement