Sie sind auf Seite 1von 7

public class SHA1 {

/*
* Bitwise rotate a 32-bit number to the left
*/
private static int rol(int num, int cnt) {
return (num << cnt) | (num >>> (32 - cnt));
}

/*
* Take a string and return the base64 representation of its SHA-1.
*/
public static String encode(String str) {

// Convert a string to a sequence of 16-word blocks, stored as an
array.
// Append padding bits and the length, as described in the SHA1
standard

byte[] x = str.getBytes();
int[] blks = new int[(((x.length + 8) >> 6) + 1) * 16];
int i;

for(i = 0; i < x.length; i++) {
blks[i >> 2] |= x[i] << (24 - (i % 4) * 8);
}

blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
blks[blks.length - 1] = x.length * 8;

// calculate 160 bit SHA1 hash of the sequence of blocks

int[] w = new int[80];

int a = 1732584193;
int b = -271733879;
int c = -1732584194;
int d = 271733878;
int e = -1009589776;

for(i = 0; i < blks.length; i += 16) {
int olda = a;
int oldb = b;
int oldc = c;
int oldd = d;
int olde = e;

for(int j = 0; j < 80; j++) {
w[j] = (j < 16) ? blks[i + j] :
( rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1) );

int t = rol(a, 5) + e + w[j] +
( (j < 20) ? 1518500249 + ((b & c) | ((~b) & d))
: (j < 40) ? 1859775393 + (b ^ c ^ d)
: (j < 60) ? -1894007588 + ((b & c) | (b & d) | (c & d))
: -899497514 + (b ^ c ^ d) );
e = d;
d = c;
c = rol(b, 30);
b = a;
a = t;
}

a = a + olda;
b = b + oldb;
c = c + oldc;
d = d + oldd;
e = e + olde;
}

// Convert 160 bit hash to base64

int[] words = {a,b,c,d,e,0};
byte[] base64 =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".getBytes()
;
byte[] result = new byte[28];
for (i=0; i<27; i++) {
int start=i*6;
int word=start>>5;
int offset=start & 0x1f;

if (offset <= 26) {
result[i] = base64[(words[word] >> (26 - offset)) & 0x3F];
} else if (offset == 28) {
result[i] = base64[(((words[word] & 0x0F) << 2) |
((words[word+1] >> 30) & 0x03)) & 0x3F];
} else {
result[i] = base64[(((words[word] & 0x03) << 4) |
((words[word+1] >> 28) & 0x0F)) & 0x3F];
}
}
result[27]='=';

return new String(result);
}

// public static void main(String args[]) {
// System.out.println(ma hoa(args[0]));
// }
}


2 .
M ha k t s dng phng thc SHA-1 v SHA-256 trong
ASP.Net

Chng ta to 1 Website gm:

Giao din Default.aspx
<div style="background:green;padding:10px; color: #FFFFFF;">
Kt qu : <asp:Label ID="lblKQ" runat="server" ForeColor="Red" Font-
Bold="true" Font-Size="13px"></asp:Label>
<br />
<asp:TextBox ID="txtNhap" runat="server" Height="30" Font-
Size="13px"></asp:TextBox>
<br />
<asp:Button ID="btnMaHoaSHA1" runat="server" OnClick="btnMaHoaSHA1_Click"
Text="M ha SHA-1"/>
<asp:Button ID="btnMaHoaSHA256" runat="server" OnClick="btnMaHoaSHA256_Cli
ck" Text="M ha SHA-256"/>
</div>

Code x l Default.aspx.cs
protected void btnMaHoaSHA1_Click(object sender, EventArgs e)
{
try
{
UnicodeEncoding UE = new UnicodeEncoding();
Byte[] hashBytes = UE.GetBytes(this.txtNhap.Text.Trim());
SHA1CryptoServiceProvider sha1c = new SHA1CryptoServiceProvider();
Byte[] crypt = sha1c.ComputeHash(hashBytes);
this.lblKQ.Text = BitConverter.ToString(crypt);
}
catch (Exception ex)
{
throw new Exception("M ha tht bi: " + ex.Message);
}
}
protected void btnMaHoaSHA256_Click(object sender, EventArgs e)
{
try
{
byte[] inputBytes
= ASCIIEncoding.ASCII.GetBytes(this.txtNhap.Text.Trim());
SHA256Managed hash = new SHA256Managed();
byte[] hashBytes = hash.ComputeHash(inputBytes);
this.lblKQ.Text = Convert.ToBase64String(hashBytes);
}
catch (Exception ex)
{
throw new Exception("M ha tht bi: " + ex.Message);
}
}


3.
Cho bn thienict !
Chng ta s thc hin m ha SHA-1 v SHA-256 trong java nh sau :

Bc u : to file encryptSHA.java vi ni dung :

package encrypt;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
*
* @author ku
*/
public class encryptSHA {
//Hm m ha 'sha' gm :
// 'text' chui gi tr cn m ha
// 'method' phng thc mun m ha
public static String sha(String text,String method) throws NoSuchAlgorithmException,
UnsupportedEncodingException {
MessageDigest md = MessageDigest.getInstance(method);
md.update(text.getBytes());//----- Bt u vic bm gi tr ca mng byte
byte byteData[] = md.digest();//-- Hon tt bm gi tr
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++) {//--- Lp theo gi tr ca mng byte gn vo
StringBuffer sb
sb.append(Integer.toString((byteData & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
}


Sau chng ta gi chng Main.java :

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package mahoasha;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import encrypt.encryptSHA;
/**
*
* @author duaMun
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
BufferedReader userInput = new BufferedReader (new InputStreamReader(System.in));
System.out.println("Nhp chui cn m ha:");
String rawString = userInput.readLine();
System.out.println("Chui sau khi m ha SHA-1: " + encryptSHA.sha(rawString,"SHA-1"));
System.out.println("Chui sau khi m ha SHA-256: " + encryptSHA.sha(rawString,"SHA-
256"));
}
}


Kt qu sau khi run c th hin nh sau
run:
Nhp chui cn m ha:
boDuaGroup
Chui sau khi m ha SHA-1: cac60633abaf7a3a7345058c789897c576dbaab3
Chui sau khi m ha SHA-256:
d0835e9f23548df51509a2230867d042c968d4567034d9ac95bc393cf187759d



M ha l g? v ti sao chng ta cn n?

Khi chng ta truyn thng ip t ni gi n ni nhn, nu m bo 100% l ni
nhn s nhn c thng tin nguyn vn v khng h b xm phm bi bt k ai, th
th lc y khng cn bt c hnh thc m ha no, ta c thng tin nh n vn th.
Nhng i khng nh l m, khng h c ci 100% , thng tin gi i c th b xem
trm bi ai y ch ng tn cng trn knh truyn tin (c th l ng th tn, ng
in thoi, mng internet...). Khi y k tn cng s xem cc thng tin cn bo mt mt
cch d dng.

Chnh vic m ha lm cho bn tn cng d c c thng tin th cng khng th hiu
c ni dung tr khi c kha gii m.

Ti nh ngy xa v ham bng qu m b ti cm ti khng c i chi cng
my a trong xm. Mi ln i bng, chng s gi tn ti, v d nhin b ti cng
nghe thy na nn ng cm tit. thay i tnh hung ny, ti bo chng bn gi
tn khc, thay v gi tn tht ca ti v ng bo l i bng. Ti la c b ti
vi ln nhng v sau ng cng pht hin ra quy lut :))

tnh hung trn l mt kiu m ha rt n gin. C ti v b u tip nhn cng
mt thng tin nhng v c tha thun t trc (kha gii m) nn ti hiu c
ngha ng sau ca cc thng ip cn b ti th khng.

C 5 thut ng quan trng cn phi nh, l:
Bn r: thng tin trc khi c m ha, khi c tip xc vi bn r mi
ngi u hiu c ngha ca n.
Bn mt: thng tin sau khi c m ha, v ngi khc khng th hiu c
ngha ca n.
M ha: l cch thc a bn r thnh bn mt.
Gii m: l cch thc a bn mt thnh bn r.
Kha: cng ging nh cha kha ngoi i, l phng tin gip cho vic gii
m.
Khi qu trnh m ha d liu c tin hnh v gi i, chng ta chp nhn gi thuyt
khng my vui v l d liu m ha c th b xem trm, nhng ta vn an tm v
chng s khng th hiu c ngha ca ng ln xn ! Ngay c bn thn chng
ta v c ngi nhn cng s chng hiu thng tin sau khi c m ha, iu duy nht
gip hiu c thng tin chnh l kha.

Do vy, vic bo mt kha l v cng quan trng, mt kha ng ngha vi mt thng
tin, n ging y nh vic bn ri kha kt st vo tay k trm vy.

Cu hi t ra: d k tn cng bit kha nhng lm sao hn bit c thut ton m
ha gii m?

Tr khi bn ngh ra c thut ton hon ton mi, cn khng cc thut ton m ha
v c bn l da trn cng mt nn tng. V vic k tn cng trnh cao nm r cc
thut ton gii m ny l iu c gi nh t trc. Ci duy nht m chng khng
bit l kha m thi.

Cu hi tip theo: nu ti truyn c kha theo cch an ton v bo mt th ti sao
ti khng s dng knh truyn thng tin - vic g phi m ha na?

Cu tr li l, thng tin truyn i c th rt ln, trong khi kha th thng rt nh gn.
N ging nh bn c c t ti liu to trong khi kha cho ng ti liu th nh hn
nhiu.

Das könnte Ihnen auch gefallen