提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、PHP sha1方法
  • 二、当raw为true
  • 三、JAVA转换
  • 四、说明

一、PHP sha1方法

sha1() 函数计算字符串的 SHA-1 散列。

sha1() 函数使用美国 Secure Hash 算法 1。

如果成功,则返回所计算的 SHA-1 散列,如果失败,则返回 false。

参数 描述
string 必需。规定要计算的字符串。
raw 可选。规定十六进制或二进制输出格式:

  • TRUE - 原始 20 字符二进制格式
  • FALSE - 默认。40 字符十六进制数

    注释:该参数是 PHP 5.0 中添加的。

二、当raw为true

<?php$str = sha1("我们");echo($str);//结果为:0805949359741ce14fe90402b25e2e023f449748
?>
<?php$str_true = sha1("我们", TRUE);echo($str_true);//结果为:��Yt�O��^.?D�H
?>

当raw为true时,其实就是对十六进制串又做了一系列转换。
上述结果 str_true 其实就是对 str 得一系列转换。
如何转换:
上述结果 str 为 40 字符十六进制数 字符串

  • 将 40 位 16进制 字符串按照两两为一组,分割成 20 组 16进制 的字符串:08,05,94,93,59,74,1c,e1,4f,e9,04,02,b2,5e,2e,02,3f,44,97,48
  • 将每一组 16进制 的数值转换成为 10进制 数值:
    08,05,148,147,89,116…
  • 对照 ASCII 码表 进行翻译出最终的原始二进制字符串。
    (对与匹配到非打印控制字符显示为空,超过127显示为�)

三、JAVA转换

代码如下(示例):

import java.io.*;
class test
{public static void main (String[] args) throws java.lang.Exception{ String str = "0805949359741ce14fe90402b25e2e023f449748";String asciiStr = convertedBinaryString(str);System.out.println(asciiStr);}public static String convertedBinaryString(String str){String[] strAry = getHexadecimalArray(str);char[] charAry = new char[20];//char[] charAry = new char[strAry.lenght]; 这么写会报错 不知道为什么int i = 0;for (String tempStr : strAry) {String a16 = hexStringToBinary(tempStr);int charIndex = binaryToAlgorism(a16);//超过127 java显示了ascii得扩展表 这里处理一下if (charIndex > 127){charAry[i] = '�'; //这个其实和上面得那个字符一样,显示不同。可能是编码问题。}else{char b = (char)charIndex;charAry[i] = b;} i++;} return String.valueOf(charAry);} /*** 分割字符串为数组* 两两为一组* @param str 十六进制字符串* @return 十六进制数 字符串数组*/public static String[] getHexadecimalArray(String str){int arylength = str.length() / 2;String[] hexAry = new String[arylength]; for (int i = 0; i < hexAry.length; i++) {hexAry[i] = str.substring(i * 2, i * 2 + 2); }return hexAry;} /*** 二进制字符串转十进制* * @param binary*            二进制字符串* @return 十进制数值*/public static int binaryToAlgorism(String binary) {int max = binary.length();int result = 0;for (int i = max; i > 0; i--) {char c = binary.charAt(i - 1);int algorism = c - '0';result += Math.pow(2, max - i) * algorism;}return result;}/*** 十六转二进制* * @param hex*            十六进制字符串* @return 二进制字符串*/public static String hexStringToBinary(String hex) {hex = hex.toUpperCase();String result = "";int max = hex.length();for (int i = 0; i < max; i++) {char c = hex.charAt(i);switch (c) {case '0':result += "0000";break;case '1':result += "0001";break;case '2':result += "0010";break;case '3':result += "0011";break;case '4':result += "0100";break;case '5':result += "0101";break;case '6':result += "0110";break;case '7':result += "0111";break;case '8':result += "1000";break;case '9':result += "1001";break;case 'A':result += "1010";break;case 'B':result += "1011";break;case 'C':result += "1100";break;case 'D':result += "1101";break;case 'E':result += "1110";break;case 'F':result += "1111";break;}}return result;}
}

四、说明

没有做测试,没有做测试,没有做测试。

JAVA实现PHP方法sha1(““,true)相关推荐

  1. android 调用java类_Android中在WebView里实现Javascript调用Java类的方法

    搜索热词 为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法 ...

  2. java中setid(),Java Process.setId方法代碼示例

    本文整理匯總了Java中org.activiti.bpmn.model.Process.setId方法的典型用法代碼示例.如果您正苦於以下問題:Java Process.setId方法的具體用法?Ja ...

  3. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  4. build.xml java打包_配置pom.xml用maven打包java工程的方法(推荐)

    下面小编就为大家带来一篇配置pom.xml用maven打包java工程的方法(推荐).小编觉得挺不错的, 现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近由于项目需要,研究了一下mav ...

  5. 使用Maven运行Java main的方法(转)

    使用Maven运行Java Main的方法(既Java Application项目),可以有如下方式解决: 1.将Maven项目导入到eclipse中,然后直接项目右键[Run As]->[Ja ...

  6. 注入安卓进程,并hook java世界的方法

    说明: 安卓系统的可执行对象有两个世界,一个是Linux Native世界,一个是Java世界.两个世界能够通过jvm产生交互,具体来说就是通过jni技术进行互相干涉.但是在正常情况下,只能在Java ...

  7. 从几个sample来学习Java堆,方法区,Java栈和本地方法栈

    2019独角兽企业重金招聘Python工程师标准>>> 最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程 ...

  8. Java IOUtils.copy方法代码示例(亲测)

    本文整理汇总了Java中org.apache.commons.io.IOUtils.copy方法的典型用法代码示例.如果您正苦于以下问题:Java IOUtils.copy方法的具体用法?Java I ...

  9. Java之toString()方法详解

    Java之toString()方法详解 Java中 toString()方法在Object类中和Intent类中都有定义,作用类似,但显示形式有点区别 一.Object类中toString()方法 t ...

最新文章

  1. 海思3559A上编译Valgrind源码操作步骤
  2. apache与tomcat连接
  3. 二元函数泰勒公式例题_考研数一对二元函数的二阶泰勒公式的要求是了解,那我们要了解到什么程度呢?会出那种类型的题呢?...
  4. 全球及中国数字出版产业投资产值与运营模式咨询报告2022版
  5. 原生JS写Ajax的请求函数
  6. 高并发下的系统设计(偏数据库设计)
  7. 国家二级计算机vb考试题型,2015全国计算机等级考试二级VB题型分析
  8. VSCode:vscode设置侧边资源管理器文字大小
  9. 在python中使用csv读写CSV
  10. C#从入门到精通源码资源汇总下载(全部免积分)
  11. 查看Android打包时签名文件keystore的MD5值
  12. CMD和AMD的区别
  13. ctf GetFlag
  14. 使用模块定义文件(.def)文件生成dll
  15. windows系统如何真正隐藏文件夹[转载]
  16. h5 vr效果_H5案例|通过VR展示的那些烧脑游戏
  17. GUI 图形用户界面编程实例-记事本的设计
  18. 复杂的数据类型(结构)
  19. MySql 自定义函数,存储过程,游标的使用
  20. Microsoft Exchange 2003 pop3 0x800ccc92 0x800ccc90 处理

热门文章

  1. HTML写一首简单的居中唐诗,《唐诗三百首》最简单一首诗,只28字却成压轴之作,誉为诗中绝品...
  2. 《像计算机科学家一样思考Python》练习4-2 用turtle绘制花朵图案
  3. Springboot——死信队列 DLX 配置和使用
  4. 【Unet系列】(二)Unet网络
  5. 小车舵机控制linux软件,在Linux(Ubuntu)上使用串口控制ROBOTIS Dynamxiel舵机
  6. 磷酸铁锂电池低温性能的改性方法概述-1
  7. 【科普】关于平板电脑的那些事
  8. JAVA_API笔记[完结]
  9. PHP 二维数组排序
  10. 怎么做服务器压力测试? 1