资源简介
对SHA-256加密算法用java代码来实现
代码片段和文件信息
/*@author liulang
*@version 09.3.22
*@主要是有String实现
*@从文件“msg.txt“中读入消息
*@在将加密的细节写入到“SHA_256.txt“文件中
*/
import java.io.*;
public class SHA_256 {
static String msg_binary=new String();//消息用二进制表示
static StringBuffer str2=new StringBuffer();//可变字符串
static String H0=“6a09e667“;//初始值
static String H1=“bb67ae85“;
static String H2=“3c6ef372“;
static String H3=“a54ff53a“;
static String H4=“510e527f“;
static String H5=“9b05688c“;
static String H6=“1f83d9ab“;
static String H7=“5be0cd19“;
static String ABCDEFGH;
static PrintWriter out; //输入到文件
static File file; //文件名
static FileReader fls;
static BufferedReader in; //文件输入流
static long begin; //程序运行前的时间
static long end; //程序运行后的时间
static String[] k=new String[64];
static String[] K={
“428a2f98““71374491““b5c0fbcf““e9b5dba5““3956c25b““59f111f1““923f82a4““ab1c5ed5“
“d807aa98““12835b01““243185be““550c7dc3““72be5d74““80deb1fe““9bdc06a7““c19bf174“
“e49b69c1““efbe4786““0fc19dc6““240ca1cc““2de92c6f““4a7484aa““5cb0a9dc““76f988da“
“983e5152““a831c66d““b00327c8““bf597fc7““c6e00bf3““d5a79147““06ca6351““14292967“
“27b70a85““2e1b2138““4d2c6dfc““53380d13““650a7354““766a0abb““81c2c92e““92722c85“
“a2bfe8a1““a81a664b““c24b8b70““c76c51a3““d192e819““d6990624““f40e3585““106aa070“
“19a4c116““1e376c08““2748774c““34b0bcb5““391c0cb3““4ed8aa4a““5b9cca4f““682e6ff3“
“748f82ee““78a5636f““84c87814““8cc70208““90befffa““a4506ceb““bef9a3f7““c67178f2“};
static String [] w=new String[80];
static int group_num=1;//组数
static int mod=0;//最后一组的原始长度
public static void main(String[] args) throws IOException {
try{
file=new File(“msg.txt“);
boolean createok;
if(!file.exists()) //判断文件是否存在
createok=file.createNewFile(); //如果文件不存在,则在当前目录创建文件
fls = new FileReader(file);
in = new BufferedReader(fls);
String msg=new String();
msg=in.readLine();
begin=System.currentTimeMillis();
out=new PrintWriter(new FileWriter(“SHA_256.txt“));
for(int i=0;i<64;i++)
k[i]=hexToBinary(K[i]);
msg_binary=stringToBinary(msg);
final int SIZE=msg_binary.length();//消息变成二进制后的长度
out.println(msg.length());
mod=SIZE%512;
out.println(msg_binary);
out.println(SIZE);
if(SIZE<448)
group_num=1;
else if(SIZE>=448&&SIZE<=512)
group_num=2;
else {
if(mod<448)
group_num=SIZE/512+1;
else
group_num=SIZE/512+2;
}
char[] cw=new char[512*group_num];///liulang
for(int i=0;i cw[i]=msg_binary.charAt(i);
}
String str1=new String(Integer.toBinaryString(SIZE));
if(SIZE<448) {
cw[S
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14140 2012-05-08 09:56 SHA_256.java
文件 2013 2010-10-03 12:34 www.wei2008.com.txt
----------- --------- ---------- ----- ----
16153 2
评论
共有 条评论