我一直在使用base64编码一段时间&它不安全,因为有些解码器可以轻松识别它。
因此,开发自己的机制来保护数据或制作加密算法是个好主意,如果是,那么自制加密代码是什么样的?
答案 0 :(得分:4)
不,开发自己的机制来保护数据或制作自己的加密算法并不是一个好主意。
你必须把它留给专家。这也是我们在这里看到你问这个问题的原因。聆听你内心的声音,相信自己在这种情况下不要相信自己。
(我不想说你不能为你做任何事情,我不想阻止你学习,只是为了生产环境中的实用指南,加密,特别是开发你自己的算法,不是它本身只是一种高级艺术,它也始终是如何确保不做任何经常发生的愚蠢错误的问题。)
答案 1 :(得分:0)
既然您已经澄清了要加密cookie中的数据,那么首先要问的问题是为什么?这些数据是否可以保存在会话变量中?
关于我能想到的唯一有意义的事情是,如果你要存储一个记住我的密码或其他一些你想要完全确定无法从cookie中读出的敏感凭证。如果您担心的是传输安全(有人可能从网络中嗅探数据),那么您应该使用HTTPS。
据说,php有mcrypt,它是许多不同类型的经过验证的密码的包装器。有了这些,一般的经验法则是您使用的位越多越好,并且您希望采用CBC模式并避免使用ECB。
首先阅读mcrypt-encrypt函数,然后使用mcrypt-decrypt解密该值。
答案 2 :(得分:-1)
任何人都可以在php中构建一个编码器有几种类型的chipers是最容易理解的,但它们很容易破解,不建议使用说如果你只是试图保护简单用户或你的东西希望学习如何构建一些安全性,因为它使得更难以识别您可以查看cypers或调整cypers以获得一点安全性。
就在最近,我正在和想要了解基本知识的人交谈,所以我基于二元值操作构建了一个,
请勿将其用于播放或学习的任何内容
class binChar{
function __construct(){
$this->pats = array('0', '1', '00', '11', '000', '111', '0000', '1111', '00000', '11111');
}
function encrypt($str){
$str = str_replace(array("\r", "\n", "\t", " "), array('\r', '\n', '\t', '\s'), $str);
$strN = str_split($str);
$bin = "";
foreach($strN as $char){
$charC = decbin(ord($char));
$count = count((string)$charC);
while($count < 8){
$chars = "0".$charC;
$count++;
}
$bin .= $chars;
}
echo "Given \r\n ".$str." \r\n Binary\r\n".$bin."\r\n";
foreach($this->pats as $key => $pat){
$bin = str_replace($pat, $key, $bin);
}
return $bin;
}
function decrypt($bin){
foreach($this->pats as $key => $pat){
$bin = str_replace($key, $pat, $bin);
}
$str = "";
$chars = str_split($bin, 8);
foreach($chars as $char){
$str .= chr(bindec($char));
}
$str = str_replace(array('\r', '\n', '\t', '\s'), array("\r", "\n", "\t", " "), $str);
return $str;
}
}
$enc = new binChar();
$test = $enc->encrypt("Hello World");
echo "Encrypted\r\n".$test;
echo "\r\nDecrypted\r\n".$enc->decrypt($test);
我重复我永远不会建议你将此用于除了玩和测试/学习如何工作以外的任何东西它只是一些混淆的基本例子。
我知道在php中使用AES并不容易理解,这不是一个简单的函数调用,但是使用它会使您的数据得到更好的保护。