php中常用加密算法及实现

3 篇文章 0 订阅
2 篇文章 0 订阅

常用算法简介:

1md5()算法:把任意长度的信息进行散列计算,得到固定长度的输出,这个 散列计算过程是单向的,即不能对固定长度的输出信息进行计算从而得到输入信息。

2crypt()算法:将字符串用UNIX 的标准加密DES模块加密。这是单向的加密函数,无法解密。欲比对字符串,将已加密的字符串的头二个字符放在salt的参数中,再比对加密后的字符串。

3Sha1()算法:是一种单向加密算法,类似于md5算法,不同的是sha1()默认情况下返回40个字符的散列值,传入参数性质一样,第一个为加密的字符串,

函数使用规则:

1stringmd5 ( string $str [,bool $raw_output = false ] ),其中$str是需要加密的字符串,raw_output被设置为 TRUE,那么MD5报文摘要将以16字节长度的原始二进制格式返回。默认FALSE

2string crypt( string $str [, string $salt] ),其中$str是需要加密的字符串$salt是可选参数,用来指定加密的复杂度。

3stringsha1 ( string $str [,bool $raw_output = false ] ),需要加密的字符串,raw_output参数被设置为 TRUE,那么 sha1摘要将以 20字符长度的原始格式返回,否则返回值是一个 40字符长度的十六进制数字。

使用详情:

分别使用不同的算法对abcd字符串进行加密:

    1. 实现的代码:

<?php

echo"adcd进行MD5加密:<br/>";

$str="abcd";

echo"adcdmd5()加密后的结果:<br/>".md5($srr)."<br />";

echo"adcdcrpty()加密后的结果:<br/>".crypt($srr)."<br />";

echo"adcd进行sha1()加密后的结果:<br/>".sha1($srr)."<br />";

?>

    1. 结果:



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java也有类似的加密解密算法可以实现类似PHP的authcode功能。常见的加密解密算法有AES、DES、RSA等。 以AES算法为例,可以使用Java内置的javax.crypto库的AES算法实现加密解密。 加密示例代码: ``` import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; public class AESUtil { //默认密钥 private static final String DEFAULT_SECRET_KEY = "1234567890abcdef"; /** * AES加密 * @param content 待加密内容 * @param secretKey 密钥 * @return 加密后的内容 */ public static String encrypt(String content, String secretKey) { try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes("UTF-8"), "AES"); cipher.init(Cipher.ENCRYPT_MODE, keySpec); byte[] encrypted = cipher.doFinal(content.getBytes("UTF-8")); return Base64.encodeBase64String(encrypted); } catch (Exception e) { e.printStackTrace(); } return null; } /** * AES加密,默认使用默认密钥 * @param content 待加密内容 * @return 加密后的内容 */ public static String encrypt(String content) { return encrypt(content, DEFAULT_SECRET_KEY); } } ``` 解密示例代码: ``` import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; public class AESUtil { //默认密钥 private static final String DEFAULT_SECRET_KEY = "1234567890abcdef"; /** * AES解密 * @param content 待解密内容 * @param secretKey 密钥 * @return 解密后的内容 */ public static String decrypt(String content, String secretKey) { try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes("UTF-8"), "AES"); cipher.init(Cipher.DECRYPT_MODE, keySpec); byte[] decrypted = cipher.doFinal(Base64.decodeBase64(content)); return new String(decrypted, "UTF-8"); } catch (Exception e) { e.printStackTrace(); } return null; } /** * AES解密,默认使用默认密钥 * @param content 待解密内容 * @return 解密后的内容 */ public static String decrypt(String content) { return decrypt(content, DEFAULT_SECRET_KEY); } } ``` 使用示例: ``` String content = "hello world"; String secretKey = "1234567890abcdef"; //加密 String encryptedContent = AESUtil.encrypt(content, secretKey); System.out.println("加密后的内容:" + encryptedContent); //解密 String decryptedContent = AESUtil.decrypt(encryptedContent, secretKey); System.out.println("解密后的内容:" + decryptedContent); ``` 输出: ``` 加密后的内容:wK0MwIxt8GQ4JUQXHcJ5Og== 解密后的内容:hello world ``` 需要注意的是,加密和解密需要使用相同的密钥才能得到正确的结果。因此在实际使用,密钥需要进行安全保管,避免泄露。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值