Ⅰ 关于php 类似md5那种加密出来全小写混合数字但是可以解密的函数有没有
可以使用字符串到16进制和16进制到字符串实现
<?php
echostr_encode("哈123abc-=/*-+=");//显示:
echostr_decode("");//显示:哈123abc-=/*-+=
functionstr_encode($string){//字符串转十六进制
$hex="";
for($i=0;$i<strlen($string);$i++)
$hex.=dechex(ord($string[$i]));
$hex=strtoupper($hex);
return$hex;
}
functionstr_decode($hex){//十六进制转字符串
$string="";
for($i=0;$i<strlen($hex)-1;$i+=2)
$string.=chr(hexdec($hex[$i].$hex[$i+1]));
return$string;
}
Ⅱ PHP加密解密函数 回答有追加!!!
我这里用到了一个函数,与你上面说的解密函数类似,不过是加密解密都和在一起的
/*
* $string: 明文 或 密文
* $operation:DECODE表示解密,其它表示加密
* $key: 密匙
* $expiry:密文有效期
* */
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0)
{
// 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙
$ckey_length = 4;
// 密匙
$key = md5($key ? $key : 'livcmsencryption ');
// 密匙a会参与加解密
$keya = md5(substr($key, 0, 16));
// 密匙b会用来做数据完整性验证
$keyb = md5(substr($key, 16, 16));
// 密匙c用于变化生成的密文
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
// 参与运算的密匙
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
// 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),解密时会通过这个密匙验证数据完整性
// 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确
$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
// 产生密匙簿
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
// 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
// 核心加解密部分
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
// 从密匙簿得出密匙进行异或,再转成字符
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == 'DECODE') {
// substr($result, 0, 10) == 0 验证数据有效性
// substr($result, 0, 10) - time() > 0 验证数据有效性
// substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性
// 验证数据有效性,请看未加密明文的格式
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else {
return '';
}
} else {
// 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因
// 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码
return $keyc.str_replace('=', '', base64_encode($result));
}
}
Ⅲ php 有什么办法加密解密,加密的密文长度都是一样的
使用非对称加密方式 比如RSA
Ⅳ delphi 异或加密 如何用PHP解密 如图
你看看下在的代码行不行 差不多这个意思了,如果有问题可以私信
functiondec($str)
{
$XorKey=array(1,2,3,4,5,6,7,8);//这个应当是密钥
$rt='';
$j=0;
for($i=1;$i<=strlen($str)/2;$i++)
{
$t=intval('0x'.substr($str,$i*2-1,2))^$XorKey[$j];
$rt=$rt.chr($t);
$j=($j+1)%8;
}
return$rt;
}
$ec='12345678';
echodec($ec);
Ⅳ 请教 php如何对字符串加密和解密,求一个相关的实例!
base64_decode() 解密
base64_encode()加密
<?php
$str='Thisisanencodedstring';
echobase64_encode($str);
?>
Ⅵ php中有什么加密解密算法和易语言是一样的
软件我已发送,请按照步骤进行使用!!
希望回答能给你带来帮助~
如果满意,请采纳,如还有疑问,可继续追问!
您也可以向我们团队发出请求,会有更专业的人来为您解答!
Ⅶ php异或算法
如下 我个人习惯 ''----"" []--------{}
其实我还没做过加密 个人想法
原文 或运算 密码模板 = 密文
有你提示
密文 或运算 密码模板 =原文
<?php
$str = "abcdef";//源文
$tem = "qwertt";//密码模板
$mm1 = "";//第一次或运算后密文
$mm2 = "";//第二次或运算后密文---即原文
for($i = 0;$i<strlen($str);$i++){
$mm1 .= $str{$i} ^ $tem{$i};
}
echo $mm1;//----很少见的符号
echo "<br/>";
for($i = 0;$i<strlen($str);$i++){
$mm2 .= $mm1{$i} ^ $tem{$i};
}
echo $mm2;//----abcdef
?>
拓展:密码模板不能太长 -- 解决方法---改为某一个字符----容易破解---改为若干字符---如下
<?php
$str = "abcdef12546bf v vfd";//源文
$tem = "abc";//密码模板
$mm1 = "";//第一次或运算后密文
$mm2 = "";//第二次或运算后密文---即原文
for($i = 0;$i<strlen($str);$i++){
$j = $i % strlen($tem);
$mm1 .= $str{$i} ^ $tem{$j};
}
echo "mm1如下<br/>";//
echo $mm1;//不晓得什么原因若无上一行 没显示 但如果在上面$j前面加一个 echo
echo "<br/>";
for($i = 0;$i<strlen($str);$i++){
$j = $i % strlen($tem);
$mm2 .= $mm1{$i} ^ $tem{$j};
}
echo "原文如下<br/>";
echo $mm2;
?>
解释:$j = $i % strlen($tem);依次取0 1 2 3 ....0 1 2 3 ....也就是把密码模板中字符依次取出
----到最后一个字符时----再从头开始取
疑惑:我用的时EclipsePHP 若无echo "mm1如下<br/>";
下一行即echo $mm1无法在Browser显示 但若在echo $mm1之前有其他echo 也可以显示
拓展:$tem能可有特殊字符 数字 $str可有汉字
Ⅷ 请教php源码加密及解密问题
用dw编辑器自带的加密工具,或者自己写js加密解密脚本
Ⅸ 其他语言如何解密PHP多字符串的异或加密
利用“^”异或运算对字符串进行加密
思路:1.先创建字符串输入的Scanner;
2.通过char[] array = password.toCharArray();// 获取字符数组;
3.遍历字符数组,按目前理解要用到遍历:数组所有元素进行访问,比如你要输出数组里所有的信息时,就要用到
4.进行异或运算
按位做“异或”运算是:位值相同得1,不同得0
例如:
< 加密过程:>
原解释的二进制为 1 1 0 0 ----原文
设定的key的二进制为 0 1 1 0 ----密匙
两者做“异或”结果为 0 1 0 1 ----密文
< 解密过程:>
0 1 0 1----密文
0 1 1 0----密匙
两者“异或”就得到了原文 1 1 0 0 ----原文
详细代码:
package com.lixiyu;
import java.util.Scanner;
public class Example {
public static void main(String[] args){
Scanner sca=new Scanner(System.in);
System.out.println("请输入一个英文字符串或解密字符串");
String line=sca.nextLine();//获取用户输入信息
char[] array=line.toCharArray();//获取字符数组
for (int i=0;i<array.length;i++){//历遍字符数组
array[i]=(char) (array[i]^20000);//对数组每个元素进行异或运算
}
System.out.println("加密解密结果如下:");
System.out.println(new String(array));//输出密钥
}
}
异或运算:
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
字符'A' 的ASCII编码为65 : 00000000 01000001
取整数7 : 00000000 00000000 00000000 00000111
XOR运算后 : 00000000 00000000 00000000 01000110
简单加密算法代码如下 :
public class Test {
public static final int KEY = 7;
public static void main(String[] args) {
String str = "Hello World!";
StringBuffer str2 = new StringBuffer(); //存储加密后的字符串
StringBuffer str3 = new StringBuffer(); //存储解密后的字符串
//加密过程
for(int i=0;i<str.length();i++)
{
char c = (char)(str.charAt(i) ^ KEY);
str2.append(c);
}
//解密过程
for(int i=0;i<str2.length();i++)
{
char c = (char)(str2.charAt(i) ^ KEY);
str3.append(c);
}
System.out.println("原始 的字符串为:" + str);
System.out.println("加密后 的字符串为:" + str2);
System.out.println("解密后 的字符串为:" + str3);
}
}
输出:
原始 的字符串为:Hello World!
加密后 的字符串为:Obkkh'Phukc&
解密后 的字符串为:Hello World!
Ⅹ php 有哪些可解密的加密算法
能加密,就自然能解密,只是耗费时间长短而已。
比如,就目前常见的源码加密方法,zend52、zend53、zend54、zym、phpjiami、phpjm......
都有相应的软件进行解密。