AES256 JAVA 암호화가 C # 암호화와 일치하지 않습니다.

Ahmed Negm

파트너의 JAVA API와 대화하는 동안 일부 데이터를 암호화하도록 요청 받았으며 그는 암호화 알고리즘에 대한 다음 세부 정보를 보냈습니다.

  • 알고리즘 : AES256
  • 키 크기 : 256 비트
  • 암호화 모드 : CBC (16 비트 블록, PKCS5 패딩 0)
  • 출력 유형 : Base-64
  • 비밀번호 : 0xA8703827AE586460105696504327B7BB0806FEAE96BD664F89E36868FBB48E3D
  • IV : 값이 0 인 바이트 [16]입니다.

아래 코드를 사용했지만 그와 일치하는 결과를 얻지 못했습니다.

public byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes)
{
    byte[] encryptedBytes = null;
    byte[] saltBytes = new byte[16] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    using (MemoryStream ms = new MemoryStream())
    {
        using (RijndaelManaged aes = new RijndaelManaged())
        {
            aes.KeySize = 256;
            aes.BlockSize = 128;

            var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
            aes.Key = key.GetBytes(aes.KeySize / 8);
            aes.IV = key.GetBytes(aes.BlockSize / 8);
            aes.Padding = PaddingMode.PKCS7;

            aes.Mode = CipherMode.CBC;

            using (var cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);
                cs.Close();
            }
            encryptedBytes = ms.ToArray();
        }
    }

    return encryptedBytes;
}


public string EncryptText(string input, string password)
{
    byte[] bytesToBeEncrypted = Encoding.UTF8.GetBytes(input);
    byte[] passwordBytes = Encoding.UTF8.GetBytes(password);

    passwordBytes = SHA256.Create().ComputeHash(passwordBytes);

    byte[] bytesEncrypted = AES_Encrypt(bytesToBeEncrypted, passwordBytes);

    string result = Convert.ToBase64String(bytesEncrypted);

    return result;
}

그래서 우리가 Hello 를 암호화하려고 할 때 어떻게 지내십니까? , 나는 다른 결과를 얻었고 그가 보낸 데이터를 그의 측에서 해독하고 처리 할 것이므로 그가 가진 것과 동일한 결과를 얻어야합니다. 주어진 예제는 다음과 같은 결과를 가져야합니다.TJTojNoVgoqnhCj4uTv1jLBiZU7r+s/0Bm234bHU+S0=

Subbu

몇 가지 테스트를했고 이제 예상 한 결과와 일치 할 수 있습니다.

2 개의 변경이 완료됩니다.

IV

IV = 0이라고 말했듯이 IV가 가장 쉬우므로 IV를 다음과 같이 설정하십시오.

aes.IV = new byte[16];

AES에서 IV는 16 바이트 입니다. 위의 방법은 각 값이 0으로 초기화 된 16 바이트의 바이트 배열을 만듭니다.

입력 한 암호는 "0x"로 시작합니다. 이것은 본질적으로 이것이 암호 문자열의 16 진수 표현임을 의미합니다. 나는 이것을 사용 하여이 암호를 바이트 배열로 변환 했습니다.

string password = "A8703827AE586460105696504327B7BB0806FEAE96BD664F89E36868FBB48E3D";

위에서 시작하는 "0x"를 제거했습니다.

byte[] passwordBytes = StringToByteArray(password);

위 코드는 16 진수 암호 표현을 바이트 배열로 변환합니다.

당신에 AES_Encrypt방법, 직접 키로서이 byte를 [] 지정

aes.Key = passwordBytes;

이제 내 결과는 TJTojNoVgoqnhCj4uTv1jLBiZU7r+s/0Bm234bHU+S0=예상 출력과 정확히 일치합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

AES 256 암호화가 결과와 일치하지 않습니다.

분류에서Dev

C # AES256 암호화 파일 해독

분류에서Dev

openssl 명령 암호화 데이터가 EVP_aes_128_cbc C 코드와 일치하지 않습니다.

분류에서Dev

Java 및 Linux의 암호화가 일치하지 않습니다.

분류에서Dev

NodeJS 3DES ECB 암호화가 C # 암호화와 동일하지 않습니다.

분류에서Dev

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

분류에서Dev

Objective-C에서 PHP AES256 암호화 호환성

분류에서Dev

Objective C에서 md5를 키로 두 배로 사용하여 AES256 암호화를 수행하는 방법은 무엇입니까?

분류에서Dev

Matlab에서 AES256으로 이미지 암호화 / 복호화

분류에서Dev

Node.js Crypto aes256 Cipher를 암호화-복호화하는 방법

분류에서Dev

AES 암호화가 PHP와 C #간에 작동하도록 만들 수 없습니다.

분류에서Dev

AES256 암호화 텍스트를 해독 할 수 없습니다.

분류에서Dev

gpg로 복호화 할 수있는 대칭 AES256을 사용하여 Ruby로 파일을 어떻게 암호화합니까?

분류에서Dev

PHP를 사용하여 Java와 동일한 AES-128-CBC 암호화를 얻습니다.

분류에서Dev

원래 C # 코드와 다른 결과를 제공하는 Python AES 암호화

분류에서Dev

일반 비밀번호와 암호화 된 비밀번호가 Shiro에서 일치하지 않습니다.

분류에서Dev

AES-256에서 암호 복구 암호화되지 않은 파일을 통해 암호화 된 Zip 아카이브를 압축 하시겠습니까?

분류에서Dev

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

분류에서Dev

AES256 암호화 / 복호화 오류 + IOS SDK 7

분류에서Dev

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

분류에서Dev

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

분류에서Dev

AES 암호화 / 복호화에서 복호화 된 파일을 문자열로 가져올 수 없습니다.

분류에서Dev

AES-256 암호화 된 파일의 암호 해독이 작동하지 않음

분류에서Dev

AWS SDK를 설치하지 않고 AES256 암호화를 사용하여 Powershell을 통해 S3에 파일을 업로드하려면 어떻게해야합니까?

분류에서Dev

postgresql의 codeigniter 기본 암호화 암호와 일치합니까?

분류에서Dev

회전 암호 암호화는 암호화하지 않습니다.

분류에서Dev

df 데이터가 LUKS 암호화 파티션의 fdisk 데이터와 일치하지 않습니다.

분류에서Dev

AES 암호화 base64 (). encodetoString은 Java netbean에서 식별되지 않습니다.

분류에서Dev

CryptoJ를 사용하여 AES256으로 암호화하는 올바른 방법을 수행하는 방법

Related 관련 기사

  1. 1

    AES 256 암호화가 결과와 일치하지 않습니다.

  2. 2

    C # AES256 암호화 파일 해독

  3. 3

    openssl 명령 암호화 데이터가 EVP_aes_128_cbc C 코드와 일치하지 않습니다.

  4. 4

    Java 및 Linux의 암호화가 일치하지 않습니다.

  5. 5

    NodeJS 3DES ECB 암호화가 C # 암호화와 동일하지 않습니다.

  6. 6

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

  7. 7

    Objective-C에서 PHP AES256 암호화 호환성

  8. 8

    Objective C에서 md5를 키로 두 배로 사용하여 AES256 암호화를 수행하는 방법은 무엇입니까?

  9. 9

    Matlab에서 AES256으로 이미지 암호화 / 복호화

  10. 10

    Node.js Crypto aes256 Cipher를 암호화-복호화하는 방법

  11. 11

    AES 암호화가 PHP와 C #간에 작동하도록 만들 수 없습니다.

  12. 12

    AES256 암호화 텍스트를 해독 할 수 없습니다.

  13. 13

    gpg로 복호화 할 수있는 대칭 AES256을 사용하여 Ruby로 파일을 어떻게 암호화합니까?

  14. 14

    PHP를 사용하여 Java와 동일한 AES-128-CBC 암호화를 얻습니다.

  15. 15

    원래 C # 코드와 다른 결과를 제공하는 Python AES 암호화

  16. 16

    일반 비밀번호와 암호화 된 비밀번호가 Shiro에서 일치하지 않습니다.

  17. 17

    AES-256에서 암호 복구 암호화되지 않은 파일을 통해 암호화 된 Zip 아카이브를 압축 하시겠습니까?

  18. 18

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

  19. 19

    AES256 암호화 / 복호화 오류 + IOS SDK 7

  20. 20

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

  21. 21

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

  22. 22

    AES 암호화 / 복호화에서 복호화 된 파일을 문자열로 가져올 수 없습니다.

  23. 23

    AES-256 암호화 된 파일의 암호 해독이 작동하지 않음

  24. 24

    AWS SDK를 설치하지 않고 AES256 암호화를 사용하여 Powershell을 통해 S3에 파일을 업로드하려면 어떻게해야합니까?

  25. 25

    postgresql의 codeigniter 기본 암호화 암호와 일치합니까?

  26. 26

    회전 암호 암호화는 암호화하지 않습니다.

  27. 27

    df 데이터가 LUKS 암호화 파티션의 fdisk 데이터와 일치하지 않습니다.

  28. 28

    AES 암호화 base64 (). encodetoString은 Java netbean에서 식별되지 않습니다.

  29. 29

    CryptoJ를 사용하여 AES256으로 암호화하는 올바른 방법을 수행하는 방법

뜨겁다태그

보관