第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

加密:使用 vb.net 得到的結(jié)果與 php 不同

加密:使用 vb.net 得到的結(jié)果與 php 不同

PHP
繁花如伊 2023-11-03 21:23:55
我有這個 php 代碼$plain_text = "abc";$salt = "123";echo $encrypted_text = openssl_encrypt($plain_text, "AES-128-ECB", $salt);// result: kR/1uaFarptS5+n951MVsQ==我在vb.net上嘗試了幾種方法(類和函數(shù)),但是用這種語言加密的結(jié)果每次都與上面使用php的不一樣。例如這個:Public Function AES_Encrypt (ByVal input As String, ByVal pass As String) As String        Dim AES As New System.Security.Cryptography.RijndaelManaged        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider        Dim encrypted As String = ""        Try            Dim hash (31) As Byte            Dim temp As Byte () = Hash_AES.ComputeHash (System.Text.ASCIIEncoding.ASCII.GetBytes (pass))            Array.Copy (temp, 0, hash, 0, 16)            Array.Copy (temp, 0, hash, 15, 16)            AES.Key = hash            AES.Mode = Security.Cryptography.CipherMode.ECB            Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor            Dim Buffer As Byte () = System.Text.ASCIIEncoding.ASCII.GetBytes (input)            encrypted = Convert.ToBase64String (DESEncrypter.TransformFinalBlock (Buffer, 0, Buffer.Length))            Return encrypted        Catch ex As Exception        End Try    End Function sEnc = AES_Encrypt("abc", "123") Console.WriteLine(sEnc)'result: Z3hCHcS0b2zJ7fEod3jcrw==請問,使用 vb.net(無 C#),如何使用算法“AES-128-ECB”獲得文本“abc”和鹽“123”的加密結(jié)果“kR/1uaFarptS5+n951MVsQ==”?
查看完整描述

1 回答

?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

由于AES-128-ECBPHP代碼中的規(guī)范,ECB模式下使用AES-128,即密鑰長度為16字節(jié)。但由于僅應(yīng)用了 3 字節(jié)大鍵 ( 123),PHP 將值填充到必要的 16 字節(jié)大小0x00。請注意,如果密鑰太長,則會被截斷。


在 VB 代碼中使用 32 字節(jié)密鑰。由于在 .NET 中,密鑰大小決定了 AES 變體,因此應(yīng)用 AES-256。而且,傳遞的密鑰并不是直接使用的,而是根據(jù)傳遞的值與摘要MD5推導(dǎo)出實際的密鑰。


為了讓VB代碼返回PHP代碼的結(jié)果,PHP代碼的邏輯必須在VB代碼中實現(xiàn):


...

'Dim hash(31) As Byte

'Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))

'Array.Copy(temp, 0, hash, 0, 16)

'Array.Copy(temp, 0, hash, 15, 16)

'AES.Key = hash

Dim keyPadded(15) As Byte

Dim key = System.Text.ASCIIEncoding.ASCII.GetBytes(pass)

Array.Copy(key, 0, keyPadded, 0, Math.Min(16, key.Length))

AES.Key = keyPadded

...

幾點說明:

  • 在 PHP 代碼中,該鍵稱為$salt.?這是誤導(dǎo),因為鹽有不同的含義。

  • ECB模式通常是不安全的。

  • AES?-128 使用 16 字節(jié)密鑰。123不是一個強鍵(但也許這只是一個虛擬值)。

  • 如果123不代表密鑰,而是派生密鑰的密碼,那么通常不應(yīng)使用 MD5,而應(yīng)使用專門設(shè)計的算法,例如PBKDF2或Argon2。


查看完整回答
反對 回復(fù) 2023-11-03
  • 1 回答
  • 0 關(guān)注
  • 229 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號