رفتن به مطلب
  • 0

رمزنگاری بین B4A و PHP


امیرحسین قاسمی

سوال

سلام،

برای اینکه یه استرینگی رو در کلاینت رمزنگاری و در سرور رمزگشایی کنیم یا بلعکس باید چیکار کنیم؟!

قبلا کتابخونه PersianEncryption توی فروشگاه بود و من خریده بودمش ولی اون درست کار نمیکنه و وقتی توی کلاینت رمزنگاری میکنیم بیشتر مواقع نمیتونه توی سرور رمزگشایی بشه و کلا هماهنگ نیست...

الان چند ماهه دنبال همینم ولی متاسفانه هیچی پیدا نکردم که با فارسی هم سازگار باشه!!!

لطفا راهنمایی بفرمایید. سپاسگزارم!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

خودم بلاخره پیداش کردم😍

انگلیسی، فارسی و کاراکترهایی مثل "!@#$%^&*():;.?/<>{}" رو امتحان کردم درست کار کرد.

کدهای B4A:

ابتدا کتابخونه های StringUtils و Encryption رو فعال کنید. این کتابخونه ها رو پیوست میکنم.

Public Sub Encrypt(data As String, Password As String) As String
	Dim SU As StringUtils
	Dim abc As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
	Dim iv As String = ""
	For i = 0 To 15
		iv = iv & (abc.CharAt(Rnd(0,abc.Length)))
	Next
	Dim IVb() As Byte = iv.GetBytes("UTF8")
	Dim kg As KeyGenerator
	Dim C As Cipher
	Dim SU As StringUtils
	kg.Initialize("AES")
	kg.KeyFromBytes(Password.GetBytes("UTF8"))
	C.Initialize("AES/CBC/PKCS5Padding")
	C.InitialisationVector = IVb
	Dim datas() As Byte = C.Encrypt(data.GetBytes("UTF8"), kg.Key, True)
	Return iv & SU.EncodeBase64(datas)
End Sub

Public Sub Decrypt(data As String,  Password As String) As String
	Dim SU As StringUtils
	Dim iv As String = data.SubString2(0,16)
	Dim msg As String=data.Replace(iv,"")
	Dim IVb() As Byte = iv.GetBytes("UTF8")
	Dim kg As KeyGenerator
	Dim C As Cipher
	kg.Initialize("AES")
	kg.KeyFromBytes(Password.GetBytes("UTF8"))
	C.Initialize("AES/CBC/PKCS5Padding")
	C.InitialisationVector = IVb
	Dim datas() As Byte = C.Decrypt(SU.DecodeBase64(msg), kg.Key, True)
	Dim SU As StringUtils
	Return BytesToString(datas,0,datas.Length,"UTF8")
End Sub

کدهای PHP:

<?php

function Encrypt($data , $Password){
    $bytes = random_bytes(8);
    $iv=bin2hex($bytes);
    $encryptedData = openssl_encrypt($data, 'AES-256-CBC', $Password, $options=0, $iv);
    return $iv.$encryptedData;
}

function Decrypt($data , $Password){
    $iv=substr($data,0,16);
    $decryptedData = openssl_decrypt(substr($data,16), 'AES-256-CBC', $Password, $options=0, $iv);
    return $decryptedData;
}

?>

نحوه استفاده در B4A:

Log(Encrypt("amir","637494aiQ89LI9143560L6A2Xz80Vtu0")) 'رمزنگاری
Log(Decrypt("fNcPrHSOkGxgEoKJIKX8jlOIQVxfvc6KDLDk8g==","637494aiQ89LI9143560L6A2Xz80Vtu0")) 'رمزگشایی

نحوه استفاده در PHP:

echo Encrypt("amir","637494aiQ89LI9143560L6A2Xz80Vtu0"); //رمزنگاری
echo Decrypt("fNcPrHSOkGxgEoKJIKX8jlOIQVxfvc6KDLDk8g==","637494aiQ89LI9143560L6A2Xz80Vtu0"); //رمزگشایی

 

توجه کنید تعداد کاراکترهای Password باید دقیقا 32 باشد.

هزینه استفاده: سه صلوات بر محمد و آل محمد

Librarys.zip

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...