راکت
مهدی
مهدی
توسط مهدی مطرح شد
5 پاسخ

امنیت داده ها در وبسرویس لاراول

سلام دوستان
ما یه وبسرویس با لاراول ایجاد کردیم که از پکیج Passport هم استفاده میکنیم که این وبسرویس به یه اپلیکیشن سرویس میده
حالا میخوایم این تبادل اطلاعات به شکل ساده جی سونی نباشه بلکه در کل ریسپانسها تبادل اطلاعات امن تر اتفاق بیفته ، یعنی کلیه ریسپانسها با یه الگوریتمی رمزنگاری بشن که بتونیم در سمت اندروئید هم رمزگشایی کنیم
لطفا دوستانی که تجربه دارن یه راهنمایی بکنید


ثبت پرسش جدید
محسن بستان
محسن بستان
تخصص :Senior Backend Developer
@mohsenbostan6 سال پیشمطرح شد
0

@mehdi539
سلام.
قاعدتا امنیت رو همون passport با Auth تامین میکنه اما اگه می خواهید که داده هاتون رو رمز نگاری کنید، باید خودتون یک الگوریتم بنویسید که داده هاتون رو انکود کنه و از اون طرف هم بتونه همون رو دیکود کنه.


مهدی
مهدی
تخصص :توسعه دهنده
@mehdi5396 سال پیشمطرح شد
0

@mohsenbostan @hesammousavi عزیز
میشه با مثالی توضیح بدید
امکان خود لاراول :
Crypt::encrypt($result);
کلیدی نمیگره ؟
چون برنامه نویس سمت اندرویید دو تا کلید رمزنگاری با الگوریتم AES رو فرستاده که باید ریسپانس رو با اونا رمز کنم و بفرستم
iv
key
اینا در لاراول کجا باید وارد بشن


محسن بستان
محسن بستان
تخصص :Senior Backend Developer
@mohsenbostan6 سال پیشمطرح شد
0

@mehdi539
منظور از انکود همون رمزنگاریه.
Encryption فقط در خود لاراول کار میکنه یعنی شما نمی تونید سمت اندروید اون رو دیکود کنید.
بهتره که یک الگوریتم بسازید که در هر زبانی قابل استفاده باشه و بتونید باهاش دیتا رو انکد و دیکود کنید.

مثال زیر در پایتون هستش اما خیلی رمزنگاری مناسب و قوی هستش :

from pyDes import *

def encode(data,password):
    k = des(password, CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
    d = k.encrypt(data)
    return d

def decode(data,password):
    k = des(password, CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
    d = k.decrypt(data)
    return d

x = encode('John Doe', 'mypass12')
y = decode(x,'mypass12')

print x
print y

خروجی بالا :

³.\Þ\åS¾+æÅ`;Ê
John Doe

این هم یک مثال در php :

<?php
define("ENCRYPTION_KEY", "!@#$%^&*");
$string = "This is the original data string!";

echo $encrypted = encrypt($string, ENCRYPTION_KEY);
echo "<br />";
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY);

/**
 * Returns an encrypted & utf8-encoded
 */
function encrypt($pure_string, $encryption_key) {
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
    return $encrypted_string;
}

/**
 * Returns decrypted original string
 */
function decrypt($encrypted_string, $encryption_key) {
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, $encryption_key, $encrypted_string, MCRYPT_MODE_ECB, $iv);
    return $decrypted_string;
}
?>

مهدی
مهدی
تخصص :توسعه دهنده
@mehdi5396 سال پیشمطرح شد
0

@mohsenbostan عزیز
این دو تا تابع که توابع توکار خود php هستن ، درست ولی بحث اینجاست که این توابع مقدار iv رو خودشون تولید میکنن و من نمیتونم بصورت پارمتری بهش پاس بدم

مثلا الان چطور میشه متن رمز شده زیر رو بازگشایی کرد :

result: Fx2lYb0yrI+oho2RULQ=

iv: 1234567890123456
key: 1234567890123456

توسط برنامه نویس اندروئید به طریقه زیر رمز شده :
Encrypt: AES/CTR/NoPadding
Encode: Base64


محسن بستان
محسن بستان
تخصص :Senior Backend Developer
@mohsenbostan6 سال پیشمطرح شد
0

@mehdi539
همون طور که بهتون گفتم باید خودتون یک اگوریتم براش بنویسید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام