Шифрование текста на php

Добрый день!
Сегодня я расскажу о моем механихме шифрования.
Не знаю — может он ненадежный, может его уже кто-то изобрел, как говорится, «я хз, мне норм».
Итак, приступим.

Сначала шифрование. Для начала берем строку, который нужно зашифровать, переводим его в base64 (так как base64 ключ состоит только из символов a-z, A-Z, 0-9).
Затем с каждого символа получаем md5-хэш, для удобства кладем в массив.
С каждого хэша берем символ №3,6,1,2 (можно другие, я решил что эти подойдут) и склеиваем их.

Чтобы расшифровать проходимся циклом по коду, заменяем хэш[3,6,1,2] на символ, которому он соответствует.
Ну, и потом декодируем из base64.

Код:
<?php
function encode($unencoded,$key){//Шифруем
$string=base64_encode($unencoded);//Переводим в base64

$arr=array();//Это массив
$x=0;
while ($x++< strlen($string)) {//Цикл
$arr[$x-1] = md5(md5($key.$string[$x-1]).$key);//Почти чистый md5
$newstr = $newstr.$arr[$x-1][3].$arr[$x-1][6].$arr[$x-1][1].$arr[$x-1][2];//Склеиваем символы
}
return $newstr;//Вертаем строку
}

function decode($encoded, $key){//расшифровываем
$strofsym="qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM=";//Символы, с которых состоит base64-ключ
$x=0;
while ($x++<= strlen($strofsym)) {//Цикл
$tmp = md5(md5($key.$strofsym[$x-1]).$key);//Хеш, который соответствует символу, на который его заменят.
$encoded = str_replace($tmp[3].$tmp[6].$tmp[1].$tmp[2], $strofsym[$x-1], $encoded);//Заменяем №3,6,1,2 из хеша на символ
}
return base64_decode($encoded);//Вертаем расшифрованную строку
}
?>
Код самой формы не буду показывать, там все просто.

Слово «Хабр», зашыфрованное ключом «12345» будет «739ef7fc5215e83e5215b8345a02e83e706a8fff5a025e2f5215618bfa54505b52155e2fec2755e2dc07a1106837c7fe29caa11052151c34739ef7fc5215e83e5215b834f9b77ca1706ac7fe65b765b7», а «habr» с тем же ключом будет «7375314fc971f7fca334f9b765b765b7».
Думаю не надо объяснять что base64 с кириллицы длиннее, чем с латиницы.

Ну вот и все.
Демка тут.
Tags:
криптография, школьники, php

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.