java sha1加密与php sha1加密结果不一致

java sha1加密与php sha1加密结果不一致

java sha1加密得出来的结果和php sha1 结果不一致解决办法:
java calss类:

import java.util.logging.Level;
import java.util.logging.Logger;
import java.security.MessageDigest;
/**
 * @version V1.0
 * @desc sha1 加密工具类
 */
public class SHA1Util {

    /**
     * sha1加密操作
     *
     * @param content 待加密内容
     * @return 返回String
     */
    public static String encrypt(String content) {
        try {
        // Create MD5 Hash
        MessageDigest digest = MessageDigest.getInstance("SHA-1");
        digest.update(content.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < messageDigest.length; i++)
            hexString.append(String.format("%02X", 0xFF & messageDigest[i]));

        return   hexString.toString().toLowerCase();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }

    public static void main(String[] args) {
        String content = "foobar123dsadn23u1wdqqwdyxdasd";

        System.out.println("加密前:" + content);

        String encrypt = SHA1Util.encrypt(content);
        System.out.println("加密后:" + encrypt);

    }

}

php:

echo sha1('foobar123dsadn23u1wdqqwdyxdasd');

结果:

加密前:foobar123dsadn23u1wdqqwdyxdasd
加密后:d8033103e9aaf67af13a4b45534b2d0f6d8dfded
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 以下是Java中使用SHA1算法进行加密的示例代码: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class SHA1Example { public static void main(String[] args) { String input = "hello world"; try { MessageDigest sha1 = MessageDigest.getInstance("SHA-1"); byte[] output = sha1.digest(input.getBytes()); System.out.println(bytesToHex(output)); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } private static String bytesToHex(byte[] bytes) { StringBuilder result = new StringBuilder(); for (byte b : bytes) { result.append(String.format("%02x", b)); } return result.toString(); } } ``` 运行结果为: ``` 2ef7bde608ce5404e97d5f042f95f89f1c232871 ``` 其中,`input`为要加密的字符串,`MessageDigest`类负责进行加密运算,`bytesToHex`方法将结果转换为十六进制字符串。 ### 回答2: SHA-1(Secure Hash Algorithm 1)是一种常用的加密算法,主要用于对数据进行加密和校验。在Java中,可以使用Java的标准库java.security.MessageDigest来实现SHA-1加密。 首先,需要导入java.security.MessageDigest类,示例如下: import java.security.MessageDigest; 然后,可以使用以下代码来进行SHA-1加密: public class SHA1Encrypt { public static void main(String[] args) { try { String str = "Hello World"; // 创建MessageDigest对象,指定采用SHA-1算法 MessageDigest md = MessageDigest.getInstance("SHA-1"); // 将字符串转换为字节数组 byte[] byteArray = str.getBytes("UTF-8"); // 更新MessageDigest对象的输入 md.update(byteArray); // 完成哈希计算,获取加密后的字节数组 byte[] sha1Bytes = md.digest(); // 将字节数组转换为十六进制字符串 StringBuilder hexStrBuilder = new StringBuilder(); for (byte b : sha1Bytes) { String hexStr = Integer.toHexString(b & 0xff); // 如果生成的字符串长度不够两位,前面补0 if (hexStr.length() < 2) { hexStrBuilder.append("0"); } hexStrBuilder.append(hexStr); } String sha1Str = hexStrBuilder.toString(); System.out.println("原始字符串:" + str); System.out.println("SHA-1加密后的字符串:" + sha1Str); } catch (Exception e) { e.printStackTrace(); } } } 以上代码中,首先创建了一个MessageDigest对象md,并指定使用SHA-1算法。然后,将要加密的字符串转换为字节数组,并通过md.update()方法更新MessageDigest对象的输入。最后,使用md.digest()方法获取加密后的字节数组。 为了方便查看和验证,将加密后的字节数组转换为十六进制字符串。通过StringBuilder对象hexStrBuilder追加每个字节的十六进制字符串,如果字符串的长度不够两位,补0。最后,将StringBuilder对象转换为字符串。 这样,就可以得到原始字符串经过SHA-1加密后的结果了。 ### 回答3: SHA-1是一种常用的安全散列算法,常用于数据的加密和校验。在Java中,可以使用MessageDigest类来进行SHA-1加密。 首先,我们需要通过调用MessageDigest.getInstance("SHA-1")方法获取SHA-1算法的实例。例如: ``` MessageDigest digest = MessageDigest.getInstance("SHA-1"); ``` 然后,我们可以通过调用digest方法来对数据进行加密加密前需要将原始数据转换为字节数组,然后将字节数组传递给digest方法。例如,对字符串"Hello World"进行加密: ``` String data = "Hello World"; byte[] dataBytes = data.getBytes(); byte[] encryptedBytes = digest.digest(dataBytes); ``` 最后,我们可以将加密结果转换为十六进制字符串表示。可以使用BigInteger类的toString方法,并指定16作为参数来实现。例如: ``` BigInteger encryptedBigInt = new BigInteger(1, encryptedBytes); String encryptedString = encryptedBigInt.toString(16); ``` 完整的示例代码如下: ``` import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class SHA1Example { public static void main(String[] args) { try { String data = "Hello World"; byte[] dataBytes = data.getBytes(); MessageDigest digest = MessageDigest.getInstance("SHA-1"); byte[] encryptedBytes = digest.digest(dataBytes); BigInteger encryptedBigInt = new BigInteger(1, encryptedBytes); String encryptedString = encryptedBigInt.toString(16); System.out.println("SHA-1加密结果:" + encryptedString); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } } ``` 运行代码后,将会输出"SHA-1加密结果:"后跟加密后的十六进制字符串。 以上就是使用Java进行SHA-1加密的方法。通过使用MessageDigest类获取SHA-1实例,调用digest方法对数据进行加密,并将加密结果转换为十六进制字符串表示。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值