PDA

View Full Version : سوال: فانکشن کدکردن متن به روش AES



SHD.NET
شنبه 04 آذر 1391, 17:13 عصر
سلام. من با استفاده از این روش میتونم یه متن رو کد کنم . اما یه مشکلی وجود داره . از فارسی ساپورت نمیکنه و وقتی فارسی رو کد می کنه توی برگردوندنش علامت سوال میزاره . یعنی دیکد نمیشه دگ.

ممنون میشم کدشو برام اصلاح کنید .
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.MD5CryptoServiceProvi der
Dim encrypted As String = ""
Try
Dim hash(31) As Byte
Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASC II.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.TransformFinal Block(Buffer, 0, Buffer.Length))
Return encrypted
Catch ex As Exception
End Try
End Function

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.MD5CryptoServiceProvi der
Dim decrypted As String = ""
Try
Dim hash(31) As Byte
Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASC II.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(DESDecry pter.TransformFinalBlock(Buffer, 0, Buffer.Length))
Return decrypted
Catch ex As Exception
End Try
End Function

SHD.NET
شنبه 04 آذر 1391, 20:35 عصر
آقا کسی نیست جواب مارو بده ؟

چه وضعشه؟؟ چرا هیچکی جواب نمیده ؟؟؟ :ناراحت:
یعنی هیچکی بلد نیست توی این انجمن ؟؟؟ :گریه:

دیگه داره به سرم میزنه برم سراغ سی شارپ . چون اونجا خیلی راحت تر جواب آدمو میدن :متفکر:

amirmms
دوشنبه 06 آذر 1391, 17:51 عصر
یکم بیشتر توضیح بده این کد چیکار میکنه برای چه کاری استفاده می شه ؟؟؟؟؟

alimanam
دوشنبه 06 آذر 1391, 19:33 عصر
با سلام

عزیزم مگه کاراکترهای فارسی به صورت یونیکد نیستن ؟! خوب پس چرا از کد اسکی استفاده کردی ؟ برای حل مشکل هر کجا که ASCIIEncoding.ASCII میبینی به جاش UTF8Encoding.UTF8 بزار . یعنی توابع شما به صورت زیر تغییر میکنن :


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.MD5CryptoServiceProvi der
Dim encrypted As String = ""
Try
Dim hash(31) As Byte
Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.UTF8Encoding.UTF8 .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.UTF8Encoding.UTF8.GetBytes(input)
encrypted = Convert.ToBase64String(DESEncrypter.TransformFinal Block(Buffer, 0, Buffer.Length))
Return encrypted
Catch ex As Exception
Throw ex
End Try
End Function

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.MD5CryptoServiceProvi der
Dim decrypted As String = ""
Try
Dim hash(31) As Byte
Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.UTF8Encoding.UTF8 .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.UTF8Encoding.UTF8.GetString(DESDecrypt er.TransformFinalBlock(Buffer, 0, Buffer.Length))
Return decrypted
Catch ex As Exception
Throw ex
End Try
End Function

موفق باشید./

SHD.NET
دوشنبه 06 آذر 1391, 20:00 عصر
ولی الان که تبدیل شده دگ کار نمی کنه

alimanam
دوشنبه 06 آذر 1391, 20:33 عصر
با سلامی دوباره !

یعنی چی کار نمیکنه ؟!!!

http://www.sharefile.ir/uploads/1354009574.jpg

موفق باشید./

SHD.NET
دوشنبه 06 آذر 1391, 20:51 عصر
ممنون . درست کار کرد