JAVA实现PHP方法sha1(““,true)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、PHP sha1方法
- 二、当raw为true
- 三、JAVA转换
- 四、说明
一、PHP sha1方法
sha1() 函数计算字符串的 SHA-1 散列。
sha1() 函数使用美国 Secure Hash 算法 1。
如果成功,则返回所计算的 SHA-1 散列,如果失败,则返回 false。
参数 | 描述 |
---|---|
string | 必需。规定要计算的字符串。 |
raw |
可选。规定十六进制或二进制输出格式:
|
二、当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)相关推荐
- android 调用java类_Android中在WebView里实现Javascript调用Java类的方法
搜索热词 为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法 ...
- java中setid(),Java Process.setId方法代碼示例
本文整理匯總了Java中org.activiti.bpmn.model.Process.setId方法的典型用法代碼示例.如果您正苦於以下問題:Java Process.setId方法的具體用法?Ja ...
- 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...
- build.xml java打包_配置pom.xml用maven打包java工程的方法(推荐)
下面小编就为大家带来一篇配置pom.xml用maven打包java工程的方法(推荐).小编觉得挺不错的, 现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近由于项目需要,研究了一下mav ...
- 使用Maven运行Java main的方法(转)
使用Maven运行Java Main的方法(既Java Application项目),可以有如下方式解决: 1.将Maven项目导入到eclipse中,然后直接项目右键[Run As]->[Ja ...
- 注入安卓进程,并hook java世界的方法
说明: 安卓系统的可执行对象有两个世界,一个是Linux Native世界,一个是Java世界.两个世界能够通过jvm产生交互,具体来说就是通过jni技术进行互相干涉.但是在正常情况下,只能在Java ...
- 从几个sample来学习Java堆,方法区,Java栈和本地方法栈
2019独角兽企业重金招聘Python工程师标准>>> 最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程 ...
- Java IOUtils.copy方法代码示例(亲测)
本文整理汇总了Java中org.apache.commons.io.IOUtils.copy方法的典型用法代码示例.如果您正苦于以下问题:Java IOUtils.copy方法的具体用法?Java I ...
- Java之toString()方法详解
Java之toString()方法详解 Java中 toString()方法在Object类中和Intent类中都有定义,作用类似,但显示形式有点区别 一.Object类中toString()方法 t ...
最新文章
- 海思3559A上编译Valgrind源码操作步骤
- apache与tomcat连接
- 二元函数泰勒公式例题_考研数一对二元函数的二阶泰勒公式的要求是了解,那我们要了解到什么程度呢?会出那种类型的题呢?...
- 全球及中国数字出版产业投资产值与运营模式咨询报告2022版
- 原生JS写Ajax的请求函数
- 高并发下的系统设计(偏数据库设计)
- 国家二级计算机vb考试题型,2015全国计算机等级考试二级VB题型分析
- VSCode:vscode设置侧边资源管理器文字大小
- 在python中使用csv读写CSV
- C#从入门到精通源码资源汇总下载(全部免积分)
- 查看Android打包时签名文件keystore的MD5值
- CMD和AMD的区别
- ctf GetFlag
- 使用模块定义文件(.def)文件生成dll
- windows系统如何真正隐藏文件夹[转载]
- h5 vr效果_H5案例|通过VR展示的那些烧脑游戏
- GUI 图形用户界面编程实例-记事本的设计
- 复杂的数据类型(结构)
- MySql 自定义函数,存储过程,游标的使用
- Microsoft Exchange 2003 pop3 0x800ccc92 0x800ccc90 处理
热门文章
- HTML写一首简单的居中唐诗,《唐诗三百首》最简单一首诗,只28字却成压轴之作,誉为诗中绝品...
- 《像计算机科学家一样思考Python》练习4-2 用turtle绘制花朵图案
- Springboot——死信队列 DLX 配置和使用
- 【Unet系列】(二)Unet网络
- 小车舵机控制linux软件,在Linux(Ubuntu)上使用串口控制ROBOTIS Dynamxiel舵机
- 磷酸铁锂电池低温性能的改性方法概述-1
- 【科普】关于平板电脑的那些事
- JAVA_API笔记[完结]
- PHP 二维数组排序
- 怎么做服务器压力测试? 1