如題,想用Sqlserver的aes128進行加密然后在.net上進行解密
uj5u.com熱心網友回復:
完全可以啊,這都是通用的演算法uj5u.com熱心網友回復:
先查兩邊有無相應的函式或方法可呼叫, 如有則可以.如沒有, 可以用SQL CLR實作.
uj5u.com熱心網友回復:
我沒解開,默認是CBC加密模式么uj5u.com熱心網友回復:
建議把加密解密的代碼貼一下.uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
這是SQL端的, 還需有C#端的代碼呀?另: 建議發代碼時用文本格式而非圖片,方便他人復制粘貼做測驗.
uj5u.com熱心網友回復:
SQL:
--創建資料庫主密鑰
CREATE master key ENCRYPTION BY PASSWORD ='123456'
--創建證書
CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'
--創建對稱密鑰
CREATE SYMMETRIC KEY TestSymmetric
WITH ALGORITHM = AES_128
ENCRYPTION BY CERTIFICATE TestCert,PASSWORD = '000000000000000000000000asdqwert'
--轉base64
CREATE FUNCTION [dbo].[f_base64_encode]
(@bin varbinary(max))
returns varchar(max)
as begin
return cast(N'' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'varchar(max)')
end
GO
--加密
OPEN SYMMETRIC KEY TestSymmetric
DECRYPTION BY CERTIFICATE TestCert;
select USERCD
, dbo.f_base64_encode(EncryptByKey(KEY_GUID('TestSymmetric'),USERCD))
from coop.dbo.M02_USER
CLOSE SYMMETRIC KEY TestSymmetric;
--結束
VB:
uj5u.com熱心網友回復:
VB:
Public Async Function DecryptFromBase64(base64Text As String) As Task(Of String)
' base64轉byte陣列
Dim src() As Byte = Convert.FromBase64String(base64Text)
' 創建AesManaged
Using am = New AesManaged()
Using decryptor = am.CreateDecryptor(I_Key, I_Iv)
Using inStream = New MemoryStream(src, False)
Using outStream = New MemoryStream()
Using cs = New CryptoStream(inStream, decryptor, CryptoStreamMode.Read)
Dim buffer(4095) As Byte
Dim len As Integer = Await cs.ReadAsync(buffer, 0, 4096)
While (len > 0)
outStream.Write(buffer, 0, len)
len = Await cs.ReadAsync(buffer, 0, 4096)
End While
End Using
Dim result() As Byte = outStream.ToArray()
Return Encoding.Unicode.GetString(result)
End Using
End Using
End Using
End Using
End Function
uj5u.com熱心網友回復:
啟用這個函式試試,
Public Function AES_Decrypt(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 decrypted 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 DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
Dim Buffer As Byte() = Convert.FromBase64String(input)
decrypted = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
Return decrypted
Catch ex As Exception
End Try
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/17913.html
標籤:疑難問題
上一篇:求助 SQL Server想把聯查的資料以更新的方式寫入另外一張表中
下一篇:求大神幫忙
