请教 php如何对字符串加密和解密,求一个相关的实例!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教 php如何对字符串加密和解密,求一个相关的实例!相关的知识,希望对你有一定的参考价值。

字符串加密解密算法

php5.5中有更为可靠和方便的加密方式。喜欢钻研的朋友可以了解一下:

password_hash()

基于mcrypt扩展,按位异或总结的两个字符串加密解密算法

<?php

/**

* @info 字符串加密解密算法一,利用mcrypt扩展

* @param string $string 待处理字符串

* $action ENCODE,加密 | DECODE,解密

* @return string $returnstr

*/

functionmcrypt_handle_string($string,$action= 'ENCODE')



!is_array($string) orexit;

$action== 'DECODE' &&$string=base64_decode($string);

$key= "123456";//key可自定义或在配置文件中获取

$mcryptAlgorithm= MCRYPT_DES;//选择一种加密算法

$mcryptMode= MCRYPT_MODE_ECB;//选择一种加密模式

$mcryptIv= mcrypt_create_iv(mcrypt_get_iv_size($mcryptAlgorithm,$mcryptMode),MCRYPT_RAND);//创建初始化向量$returnstr=base64_encode(mcrypt_encrypt($mcryptAlgorithm,$key,$string,$mcryptMode,$mcryptIv));

if('DECODE' ==$action)

$returnstr=mcrypt_decrypt($mcryptAlgorithm,$key,$string,$mcryptMode,$mcryptIv);

return$returnstr;



<?php

/**

*

* @info 字符串加密解密算法二 利用按位异或

* @param string $string 待处理字符串

* @param $action ENCODE 加密 | DECODE 解密

* @return string*/

functionStrCode($string,$action= 'ENCODE')

$action!= 'ENCODE' &&$string=base64_decode($string);

$code= '';$key=substr(md5($GLOBALS['pwServer']['HTTP_USER_AGENT'] .$GLOBALS['db_hash']),

8,18);$keyLen=strlen($key);

$strLen=strlen($string);

for($i= 0;$i<$strLen;$i++)

$k=$i%$keyLen;$code.=$string[$i] ^$key[$k];



return($action!= 'DECODE' ?base64_encode($code) :$code);



来源jingyan.baidu.com/m/article/e4d08ffdd1ca6b0fd2f60d13.html追问

谢谢您的解答!

参考技术A

base64_decode() 解密

base64_encode()加密

<?php
$str = 'This is an encoded string';
echo base64_encode($str);
?>

追问

大神,谢谢您的加密解密方法。
这个方法确实很方便使用。
但是如果我想要别人不容易看出我使用的加密方法是base64_encode的,
请问我还需要什么样操作才能让数据安全一些呢?

本回答被提问者和网友采纳

请教啊!java加密算法!要求用户输入要加密的字符(英文字符其他的不考虑)题目如下:我主要问的是《加密

2、类的设计
该系统中必须包括三个类。
输入台控制类(Swither)
Encryption(字符串加密类)
Decryption(字符串解密类)
3、具体要求及推荐实现步骤
1、创建控制台控制类Switcher,用于和操作者交互。
2、开发加密类Encryption,使用凯撒加密法对字符串加密,并把加密后的结果返回给Switcher。
3、开发解密类Dncryption,使用凯撒加密法对字符串解密,并把解密后的结果返回给Switcher。
凯撒加密法,就是将字母表中的每个字母向后移动3位,比如a被替换成d,b被替换成f,以此类推。字母表的最后三位xyz,会被替换为abc。比如hello,加密之后是khoor.对于拉丁字母之外的其他字符,一律不加密。
我只想知道怎么加密代码! 其他的不用啰嗦!

参考技术A public class Swither
public static void main(String[] args)
System.out.println("ab,cdx;yz中国");
System.out.println(Encryption.encryption( "ab,cdx;yz中国"));
System.out.println(Decryption.decryption((Encryption.encryption( "ab,cdx;yz中国"))));


运行结果如下:
ab,cdx;yz中国
de,fga;bc中国
ab,cdx;yz中国

public class Encryption

public static String encryption(String content)

if(content==null)
return null;
String temp="";
for(int i=0;i<content.length();i++)

char c=content.charAt(i);
//if(Character.isLetter(c))
if((c>='a' && c<='z')||(c>='A' && c<='Z'))
if(c=='x' || c=='y' || c=='z' || c=='X' || c=='Y' || c=='Z')
c=(char)(c-23);
else
c=(char)(c+3);
temp+=c;


return temp;




public class Decryption

public static String decryption(String content)

if(content==null)
return null;
String temp="";
for(int i=0;i<content.length();i++)

char c=content.charAt(i);
//if(Character.isLetter(c))
if((c>='a' && c<='z')||(c>='A' && c<='Z'))
if(c=='a' || c=='b' || c=='c' || c=='A' || c=='B' || c=='C')
c=(char)(c+23);
else
c=(char)(c-3);
temp+=c;


return temp;


追问

什么东东!不是你这么做的!

追答

import java.util.Scanner;
public class Swither
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
System.out.println("请输入要加密的内容:");
String content=sc.next();
System.out.println(Encryption.encryption( content));
System.out.println(Decryption.decryption((Encryption.encryption( content))));

以上是关于请教 php如何对字符串加密和解密,求一个相关的实例!的主要内容,如果未能解决你的问题,请参考以下文章

求 js和PHP版的 DES加解密程序

请教啊!java加密算法!要求用户输入要加密的字符(英文字符其他的不考虑)题目如下:我主要问的是《加密

在php5中md5在加密字符串后如何解密

在php5中md5在加密字符串后如何解密

php源代码被加密了,请问如何解密?

某字符串应用MD5加密成32位之后,如何对其进行解密?