C sharp 기능과 유사한 NodeJS의 AES 암호화 방법

시바

C #으로 작성된 함수가 있습니다. 기본적으로이 함수는 텍스트 및 키와 같은 매개 변수를 기반으로 토큰을 생성하는 데 사용됩니다.

public string Encrypt(string input, string key) {
     byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
     byte[] toEncrptArray = UTF8Encoding.UTF8.GetBytes(input);
     Aes kgen = Aes.Create("AES");
     kgen.Mode = CipherMode.ECB;
     kgen.Key = keyArray;
     ICryptoTransform cTransform = kgen.CreateEncryptor();
     byte[] resultArray = cTransform.TransformFinalBlock(toEncrptArray, 0, toEncrptArray.Length);

     return Convert.ToBase64String(resultArray, 0, resultArray.Length);
   }

NodeJS 에서 위의 함수에 대해 동일한 대안을 검색 하거나 컴파일러를 통해 NodeJS 스크립트 내에서이 함수를 실행 하려고합니다 .

나는 시도 암호-JS NodeJS에서 모듈을하지만 다른 토큰 문자열을 얻었다. NodeJS 스크립트 내에서이 기능을 실행하는 것에 대한 대체 기능이나 아이디어를 제안하십시오.

NodeJS의 최근 코드 :

첫 번째 방법 :

var CryptoJS = require("crypto-js");

// Encrypt
var ciphertext = CryptoJS.AES.encrypt("<input>", "<key>").toString();

두 번째 방법 :

var crypto = require('crypto'),
    algorithm = 'aes-256-ctr',
    password = '<key>';

function encrypt(text){
  var cipher = crypto.createCipher(algorithm,password)
  var crypted = cipher.update(text,'utf8','hex')
  crypted += cipher.final('hex');
  return crypted;
}

두 방법 모두 C # 함수와 비교하면 다른 토큰을 제공합니다.

테리 레녹스

C # 코드에서 사용되는 AES 알고리즘은 ECB 모드에서 AES 128 비트입니다.

다음 코드를 사용하여 Node.js에서 동일한 암호화를 수행 할 수 있습니다 (원하는 경우 해독도 가능).

Node.js 코드

const crypto = require("crypto");

function encrypt(plainText, key, outputEncoding = "base64") {
    const cipher = crypto.createCipheriv("aes-128-ecb", key, null);
    let encrypted = cipher.update(plainText, 'utf8', outputEncoding)
    encrypted += cipher.final(outputEncoding);
    return encrypted;
}

function decrypt(cipherText, key, outputEncoding = "utf8") {
    const cipher = crypto.createDecipheriv("aes-128-ecb", key, null);
    let encrypted = cipher.update(cipherText)
    encrypted += cipher.final(outputEncoding);
    return encrypted;
}

const KEY = Buffer.from("abcdefghijklmnop", "utf8");

console.log("Key length (bits):", KEY.length * 8);
const encrypted = encrypt("hello world", KEY, "base64");
console.log("Encrypted string (base64):", encrypted);

// And if we wish to decrypt as well:
const decrypted = decrypt(Buffer.from(encrypted, "base64"), KEY, "utf8")
console.log("Decrypted string:", decrypted);

C # 코드

using System;
using System.Text;
using System.Security.Cryptography;

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Result: " + Encrypt("hello world", "abcdefghijklmnop"));
    }
    
    public static string Encrypt(string input, string key) {
     byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
     byte[] toEncrptArray = UTF8Encoding.UTF8.GetBytes(input);
     Aes kgen = Aes.Create("AES");
     kgen.Mode = CipherMode.ECB;
     kgen.Key = keyArray;
     ICryptoTransform cTransform = kgen.CreateEncryptor();
     byte[] resultArray = cTransform.TransformFinalBlock(toEncrptArray, 0, toEncrptArray.Length);

     return Convert.ToBase64String(resultArray, 0, resultArray.Length);
   }
}

암호화 결과 (위와 같이 일반 텍스트 및 키 사용)는 다음과 같습니다.

.Net: f7sSBDV0N6MOpRJLpSJL0w==
Node.js: f7sSBDV0N6MOpRJLpSJL0w==

분명히 우리는 프로덕션에서이 키를 사용해서는 안됩니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #을 사용한 AES 암호화

분류에서Dev

C #의 AES 암호화 및 파일 수준의 결과 비교

분류에서Dev

C 언어로 열린 SSL과 함께 AES CBC 128 비트를 사용하여 암호화 결과로 암호 텍스트를 얻는 방법

분류에서Dev

AES 암호화 C #에 사용중인 키 크기 오류

분류에서Dev

C ++ 및 Qt 5의 AES 256 암호화

분류에서Dev

Node JS 및 C #의 AES 암호화는 다른 결과를 제공합니다.

분류에서Dev

openssl C를 사용한 AES (aes-ige-128, aes-ige-192, aes-ige-256) 암호화 / 복호화

분류에서Dev

openssl C를 사용한 AES (aes-ige-128, aes-ige-192, aes-ige-256) 암호화 / 복호화

분류에서Dev

openssl C를 사용한 AES (aes-ige-128, aes-ige-192, aes-ige-256) 암호화 / 복호화

분류에서Dev

C의 매우 간단한 암호화 기능

분류에서Dev

C #으로 암호화 한 다음 Android로 복호화 (AES | IllegalBlockSizeException)

분류에서Dev

Mac OS에서 파일 암호화 : DiskUtility를 통한 AES-DMG 암호화 방법에 가능한 보안 문제가 있습니까?

분류에서Dev

C #에서 AESManaged를 사용한 AES 암호화

분류에서Dev

AES 암호화에 사용할 16,24,32 바이트를 만들기 위해 RAW의 바이트 수를 세는 방법

분류에서Dev

Byte [] 키 암호화 C # Aes

분류에서Dev

자바에서 AES256의 C #에서 암호화 및 암호 해독 중에 않고 BadPaddingException를 처리하는 방법

분류에서Dev

키 크기가 128 인 CryptoJS를 사용하여 AES에서 암호화하는 방법은 무엇입니까?

분류에서Dev

.Net의 AES + HMAC 암호화

분류에서Dev

C #과 PHP는 AES 암호화 결과가 다릅니다.

분류에서Dev

crypto-js를 사용한 파일의 AES 암호화 및 복호화

분류에서Dev

CryptoJS를 사용한 자바 스크립트의 AES 암호화 / 복호화

분류에서Dev

임의의 길이 암호를 사용하는 Java의 AES 암호화

분류에서Dev

Java 및 openssl C 다른 AES CTR 암호화 결과

분류에서Dev

AES 암호화 다른 결과, C # 및 PHP

분류에서Dev

C #에서 Java 로의 Android AES 암호화

분류에서Dev

Python3에 대한 C # AES 암호화 알고리즘

분류에서Dev

AES 256 암호화 mysql 대 PHP 방법

분류에서Dev

OpenSSL의 TripleDES 암호화 및 C #을 사용한 암호 해독

분류에서Dev

Java에서 C # 암호화 AES 문자열을 해독하는 방법

Related 관련 기사

  1. 1

    C #을 사용한 AES 암호화

  2. 2

    C #의 AES 암호화 및 파일 수준의 결과 비교

  3. 3

    C 언어로 열린 SSL과 함께 AES CBC 128 비트를 사용하여 암호화 결과로 암호 텍스트를 얻는 방법

  4. 4

    AES 암호화 C #에 사용중인 키 크기 오류

  5. 5

    C ++ 및 Qt 5의 AES 256 암호화

  6. 6

    Node JS 및 C #의 AES 암호화는 다른 결과를 제공합니다.

  7. 7

    openssl C를 사용한 AES (aes-ige-128, aes-ige-192, aes-ige-256) 암호화 / 복호화

  8. 8

    openssl C를 사용한 AES (aes-ige-128, aes-ige-192, aes-ige-256) 암호화 / 복호화

  9. 9

    openssl C를 사용한 AES (aes-ige-128, aes-ige-192, aes-ige-256) 암호화 / 복호화

  10. 10

    C의 매우 간단한 암호화 기능

  11. 11

    C #으로 암호화 한 다음 Android로 복호화 (AES | IllegalBlockSizeException)

  12. 12

    Mac OS에서 파일 암호화 : DiskUtility를 통한 AES-DMG 암호화 방법에 가능한 보안 문제가 있습니까?

  13. 13

    C #에서 AESManaged를 사용한 AES 암호화

  14. 14

    AES 암호화에 사용할 16,24,32 바이트를 만들기 위해 RAW의 바이트 수를 세는 방법

  15. 15

    Byte [] 키 암호화 C # Aes

  16. 16

    자바에서 AES256의 C #에서 암호화 및 암호 해독 중에 않고 BadPaddingException를 처리하는 방법

  17. 17

    키 크기가 128 인 CryptoJS를 사용하여 AES에서 암호화하는 방법은 무엇입니까?

  18. 18

    .Net의 AES + HMAC 암호화

  19. 19

    C #과 PHP는 AES 암호화 결과가 다릅니다.

  20. 20

    crypto-js를 사용한 파일의 AES 암호화 및 복호화

  21. 21

    CryptoJS를 사용한 자바 스크립트의 AES 암호화 / 복호화

  22. 22

    임의의 길이 암호를 사용하는 Java의 AES 암호화

  23. 23

    Java 및 openssl C 다른 AES CTR 암호화 결과

  24. 24

    AES 암호화 다른 결과, C # 및 PHP

  25. 25

    C #에서 Java 로의 Android AES 암호화

  26. 26

    Python3에 대한 C # AES 암호화 알고리즘

  27. 27

    AES 256 암호화 mysql 대 PHP 방법

  28. 28

    OpenSSL의 TripleDES 암호화 및 C #을 사용한 암호 해독

  29. 29

    Java에서 C # 암호화 AES 문자열을 해독하는 방법

뜨겁다태그

보관