سلام دوستان . من میخام یه متن رو در ویبی دات نت اینکد و دیکد کنم .
شما چه راهی به من پیشنهاد میکنید .
اگه سورس بزارید خیلی خیلی ممنون میشم .
سلام دوستان . من میخام یه متن رو در ویبی دات نت اینکد و دیکد کنم .
شما چه راهی به من پیشنهاد میکنید .
اگه سورس بزارید خیلی خیلی ممنون میشم .
بستگی به مقصودت داره
میتونی از Base64 استفاده کنی .
میتونی خودت یدونه کاستوم ایجاد کنی
اگه مقاصد امنیتی مد نظرته باید یه الگوریتم رمزگذاری استفاده کنی.
We work in the dark, we do what we can, we give what we have.
Our doubt is our passion and our passion is our task.
The rest is the madness of art
سلام من این کار رو کردم البته خودم یک متد من درآوردی رو برای کارم انتخاب کردم ولی من زیاد نیاز به امنیت نداشتم فقط می خواستم یک سری کاراکترهایی داشته باشم که کاربر معمولی سر در نیاره
این مثال رو نگاه کن ببین به دردت می خوره منبعش رو فراموش کردم
سلام دوست من
برای این کار راه حل زیاده، خود دات نت تقریبا تمامی الگوریتمهای رمزنگاری معروف رو توی فضانام(NameSpace) System.Security.Cryptography داره.
الا ایحال من دو تا قطعه کد کوچولو که از الگوریتم RSA استفاده شده برات میزارم ، امیدوارم بدردت بخوره!!
برای رمزکردن(Encrypt) :
Public Function Encrypt(ByVal Parameters As RSAParameters, ByVal DataToEcrypt() As Byte) As Byte()
Dim ERSA As RSACryptoServiceProvider = RSA.Create
ERSA.ImportParameters(Parameters)
Return ERSA.Encrypt(DataToEcrypt, True)
End Function
برای باز کردن رمز(Decrypt) :
Public Function Decrypt(ByVal Parameters As RSAParameters, ByVal DataToDecrypt() As Byte) As Byte()
Dim DRSA As RSACryptoServiceProvider = RSA.Create
DRSA.ImportParameters(Parameters)
Return DRSA.Decrypt(DataToDecrypt, True)
End Function
ممنون از شما mostafaaa
با استفاده از کدهای بالا چطور میتونم مثلا کلمه salam رو Encrypt کنم؟
سلام
keihan عزیز برات توضیح دادم فکر کنم این کمکت کنه البته فقط در مورد اعداد تهیه شده میتونی برای حروف هم تکمیلش کنی اگر کردی برای بقیه هم بذار تا استفاده کنن
PublicFunction Coder(ByVal Tool AsInteger, ByVal adad AsString) As codeed
Dim i AsInteger
'cu = TxtName.Text.Length طول رمز
Dim Pass(Tool) AsString
Dim PassSave(Tool) AsString
Dim strcodshodeh AsString = ""
i = 0
DoWhile i < Tool
Pass(i) = Val(adad(i))
SelectCase Pass(i)
Case 0
PassSave(i) = "P"
ExitSelect
Case 1
PassSave(i) = "a"
ExitSelect
Case 2
PassSave(i) = "@"
ExitSelect
Case 3
PassSave(i) = "R"
ExitSelect
Case 4
PassSave(i) = "#"
ExitSelect
Case 5
PassSave(i) = "W"
ExitSelect
Case 6
PassSave(i) = "$"
ExitSelect
Case 7
PassSave(i) = "*"
ExitSelect
Case 8
PassSave(i) = "~"
ExitSelect
Case 9
PassSave(i) = "!"
ExitSelect
EndSelect
i = i + 1
Loop
SelectCase Tool
Case 1
strcodshodeh = (PassSave(0))
ExitSelect
Case 2
strcodshodeh = (PassSave(1) & PassSave(0))
ExitSelect
Case 3
strcodshodeh = (PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 4
strcodshodeh = (PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 5
strcodshodeh = (PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 6
strcodshodeh = (PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 7
strcodshodeh = (PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 8
strcodshodeh = (PassSave(7) & PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 9
strcodshodeh = (PassSave(8) & PassSave(7) & PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 10
strcodshodeh = (PassSave(9) & PassSave(8) & PassSave(7) & PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
EndSelect
Coder.Code_Shodeh = strcodshodeh
EndFunction
PublicFunction DeCoder(ByVal Tool AsInteger, ByVal harf AsString) As Decodeed
Dim i AsInteger
Dim StrDecodeh AsString = ""
'cu = TxtName.Text.Length طول رمز
Dim Pass(Tool) AsString
Dim PassSave(Tool) AsString
i = 0
DoWhile i < Tool
Pass(i) = harf(i)
SelectCase Pass(i)
Case"P"
PassSave(i) = "0"
ExitSelect
Case"a"
PassSave(i) = "1"
ExitSelect
Case"@"
PassSave(i) = "2"
ExitSelect
Case"R"
PassSave(i) = "3"
ExitSelect
Case"#"
PassSave(i) = "4"
ExitSelect
Case"W"
PassSave(i) = "5"
ExitSelect
Case"$"
PassSave(i) = "6"
ExitSelect
Case"*"
PassSave(i) = "7"
ExitSelect
Case"~"
PassSave(i) = "8"
ExitSelect
Case"!"
PassSave(i) = "9"
ExitSelect
EndSelect
i = i + 1
Loop
SelectCase Tool
Case 1
StrDecodeh = (PassSave(0))
ExitSelect
Case 2
StrDecodeh = (PassSave(1) & PassSave(0))
ExitSelect
Case 3
StrDecodeh = (PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 4
StrDecodeh = (PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 5
StrDecodeh = (PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 6
StrDecodeh = (PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 7
StrDecodeh = (PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 8
StrDecodeh = (PassSave(7) & PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 9
StrDecodeh = (PassSave(8) & PassSave(7) & PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
Case 10
StrDecodeh = (PassSave(9) & PassSave(8) & PassSave(7) & PassSave(6) & PassSave(5) & PassSave(4) & PassSave(3) & PassSave(2) & PassSave(1) & PassSave(0))
ExitSelect
EndSelect
DeCoder.DeCode_Shodeh = StrDecodeh
EndFunction
البته این نمونه رو من برای آزمایش موضوع برات ساختم بقیش با خودت
nokhodsiah2001 عزیز با قدر دانی از جوابتون و وقتی که گذاشتید چند نکته را یادآوری می کنم
این روشی که شما گذاشتید فکر کنم برای برنامه های کوچک خانگی فقط به درد بخوره زیرا در برنامه های بزرگ به این ترتیب برای هر نوع فیلدی یا داده ای بایستی از یک نوع روش رمزنگاری استفاده کرد که این برای برنامه نویس قدری پر زحمت و غیر قابل اجرا می شود با این حال روشی که دوست عزیزمون آقای mostafaaa نوشتند عملی تر و اجرائی تر است و نیاز به کار پیچیده ای هم نداشته و امنیت آن نیز بسیار بیشتر از این روش می باشد
برنامه Secure Text v1.6 حتما کمکت می کنه
Http://securetext.persiangig.ir
سلام دوست من
همونطور که میدونید الگوریتم رمزنگاری RSA یک نوع الگرویتم رمزنگاری بر پایه Public key هستش به این معنی که ما برای رمز کردن اطلاعاتمون از یک کلید عمومی استفاده میکنیم و برای رمزگشایی از یک کلید خصوصی و همین امر امنیت اینگونه از الگوریتمها رو بسیار بالا برده .
چون منطق این گونه از الگوریتمها یک منطق عددی و ریاضی برای رمز کردن یک رشته اون را باید به صورت رشته ای از Byte ها درش بیاریم . به مثال زیر توجه کنید(البته این فقط کد Encrypt کردنه و Decrypt کردن هم دقیقا برعکس همین کار که اگه این رو بفهمید برعکسش رو هم میتونید به را حتی خودتون انجام بدید):
Imports System.Security.Cryptography
Imports System.Text
Module Module1
Private CRSA As RSA
Private PrivateKey As RSAParameters
Dim PublicKey As RSAParameters
Sub Main()
CRSA = New RSACryptoServiceProvider
Console.WriteLine("Generate Private Key...")
PrivateKey = CRSA.ExportParameters(True)
Console.WriteLine()
Console.WriteLine("Generate Public Key...")
PublicKey = CRSA.ExportParameters(False)
Console.WriteLine()
Dim DataToEncrypt() As Byte = Encoding.ASCII.GetBytes("Sallam")
Console.WriteLine("Encrypting Data... ")
Dim EncryptedData() As Byte = Encrypt(PublicKey, DataToEncrypt)
Console.WriteLine("Encryptions successful")
End Sub
Public Function Encrypt(ByVal Parameters As RSAParameters, ByVal DataToEcrypt() As Byte) As Byte()
Dim ERSA As RSACryptoServiceProvider = RSA.Create
ERSA.ImportParameters(Parameters)
Return ERSA.Encrypt(DataToEcrypt, True)
End Function
Public Function Decrypt(ByVal Parameters As RSAParameters, ByVal DataToDecrypt() As Byte) As Byte()
Dim DRSA As RSACryptoServiceProvider = RSA.Create
DRSA.ImportParameters(Parameters)
Return DRSA.Decrypt(DataToDecrypt, True)
End Function
End Module
موضوعی مهمی رو که باید توجه داشته باشید اینه که کلید عمومی و خصوصی را باید از روی یه instance از کلاس RSA درست کنید و اگه اینجور نباشه شما قادر نیستید تا اطلاعاتتون رو دوباره Decrypt کنید.
در آخر اگه بد توضیح دادم عضر میخوام چون مطالب در مورد رمزنگاری زیاده و نمیدونم کدوم قسمتش رو بگم که مطلب دقیق براتون جا بیفته.
یا علی
سلام دوستان
خوب گویا با استفاده از کدهای بالا مشکل دوستمون حل نشده. بنابراین من یه کلاس ساده نوشتم که با استفاده از اون به راحتی میتونید یه متن را Encrypt و Decrypt کنید :
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography
Public Class Encryptor
Private RJ As Rijndael = Rijndael.Create
Private MD As New MD5CryptoServiceProvider
Private Function Md5Hash(ByVal Value As String) As Byte()
Return MD.ComputeHash(ASCIIEncoding.ASCII.GetBytes(Value) )
End Function
Public Function EncryptText(ByVal TextToEncrypt As String, ByVal Key As String) As String
RJ.Key = Md5Hash(Key)
RJ.Mode = CipherMode.ECB
Dim ToEncrypt As Byte() = Encoding.ASCII.GetBytes(TextToEncrypt)
Return Convert.ToBase64String(RJ.CreateEncryptor().Transf ormFinalBlock(ToEncrypt, 0, ToEncrypt.Length))
End Function
Public Function DecryptText(ByVal EncryptedText As String, ByVal Key As String) As String
Try
RJ.Key = Md5Hash(Key)
RJ.Mode = CipherMode.ECB
Dim ToDecrypt As Byte() = Convert.FromBase64String(EncryptedText)
Return ASCIIEncoding.ASCII.GetString(RJ.CreateDecryptor() .TransformFinalBlock(ToDecrypt, 0, ToDecrypt.Length))
Catch ex As Exception
MessageBox.Show("Invalid Key", "Decryption Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Return Nothing
End Try
End Function
End Class
پی نوشت : توی این کلاس از یکی از الگوریتمهای کلید متقارن به نام Rijndael که یک الگوریتم قدرتمند هست استفاده کردم ، امیدوارم مشکلتون با این حل بشه.
یا علی
سلام . خیلی ممنون از کمک دوستان . اگه لطف کنید و یه سورس قرار بدید فکر کنم بهتر باشه .
البته اگه براتون زحمتی نیست .
با تشکر از همه شما دوستان عزیز ...................
سلام دوست من
پس این که من گذاشتم چیه ؟؟؟؟؟؟!
این کلاس که دیگه هلو برو تو گلویه !!
یه نمونه ازش میگیری و با استفاده از دوتا متدی که داره و یه کلید(که البته میتونه هر چی باشه) رشته ها رو کد و دیکد میکنی ، مثلا
کد کردن :
Dim Encrypt As New Encryptorکه خروجی زیر رو خواهیم داشت :
MsgBox(Encrypt.EncryptText("Hello world", "Anything"))
Iqp5jIimx0Iquqe5dWEKLA==حالا اگه همین خروجی رو به عنوان متن رمز شده و با همون کلید به متد DecryptText بدی :
Dim Decrypt As New Encryptorخروجیمون Hello wold خواهد بود .
MsgBox(Decrypt.DecryptText("Iqp5jIimx0Iquqe5dWEKLA ==", "Anything"))
یا علی
با عرض سلام خدمت آقا mostafaaa
-بنده می خواستم با System.Security.Cryptography بیشتر آشنا شوم مقاله آموزشی فارسی یا انگلیسی در این باره سراغ ندارید؟
DES-و AES و 3DES و RC4 و MD5 و SHA1 - 256 -384 -512 جز همین فضا نام هستند؟
-hash یعنی چه؟
با تشکر فراوان از شما
با تشکر از همه دوستان .......................
سلام بله تقریبا تمامی اینها که نام بردید در همین NameSpace وجود دارند.
در مورد مقاله هم اگه توی اینترنت یه جستجوی کوچیک بکنی کلی مطلب مفید پیدامیکنی .
اگه دنبال e.book هم میگردید پیشنهاد میکنم اول از این (http://www.scribd.com) سایت شروع کنید.
یا علی