رمزنگاری بین B4A و PHP برای رمزنگاری یک داده

رمزنگاری بین B4A و PHP برای رمزنگاری یک داده در سمت کلاینت و رمزگشایی همان داده در سمت سرور یا بلعکس میتونین از این کدها استفاده کنین.

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

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

کدهای B4A:

</pre>
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
<pre>

کدهای PHP:

</pre>
<?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;
}

?>
<pre>

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

Log(Encrypt("amir","637494aiQ89LI9143560L6A2Xz80Vtu0")) 'رمزنگاری
Log(Decrypt("fNcPrHSOkGxgEoKJIKX8jlOIQVxfvc6KDLDk8g==","637494aiQ89LI9143560L6A2Xz80Vtu0")) 'رمزگشایی
نحوه استفاده در PHP:
echo Encrypt("amir","637494aiQ89LI9143560L6A2Xz80Vtu0"); //رمزنگاری
echo Decrypt("fNcPrHSOkGxgEoKJIKX8jlOIQVxfvc6KDLDk8g==","637494aiQ89LI9143560L6A2Xz80Vtu0"); //رمزگشایی

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

دیدگاهتان را بنویسید