Java Tutorial/Security/SHA1 Secure Hash Algorithm

Материал из Java эксперт
Перейти к: навигация, поиск

Basic IO example using SHA1

   <source lang="java">

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.security.DigestInputStream; import java.security.DigestOutputStream; import java.security.MessageDigest; public class MainClass {

 public static void main(String[] args) throws Exception {
   byte[] input = "1234567".getBytes();
   MessageDigest hash = MessageDigest.getInstance("SHA1");
   ByteArrayInputStream bIn = new ByteArrayInputStream(input);
   DigestInputStream dIn = new DigestInputStream(bIn, hash);
   ByteArrayOutputStream bOut = new ByteArrayOutputStream();
   int ch;
   while ((ch = dIn.read()) >= 0) {
     bOut.write(ch);
   }
   byte[] newInput = bOut.toByteArray();
   System.out.println("in digest : " + new String(dIn.getMessageDigest().digest()));
   DigestOutputStream dOut = new DigestOutputStream( new ByteArrayOutputStream(), hash);
   dOut.write(newInput);
   dOut.close();
   System.out.println("out digest: " + new String(dOut.getMessageDigest().digest()));
 }

}</source>





Encrypt a password

   <source lang="java">

public class Main {

 public static void main(String arg[]) throws Exception {
   System.out.println(encrypt("String"));
 }
 public static byte[] encrypt(String x) throws Exception {
   java.security.MessageDigest d = null;
   d = java.security.MessageDigest.getInstance("SHA-1");
   d.reset();
   d.update(x.getBytes());
   return d.digest();
 }

}</source>





PSS parameter recovery and encoding

   <source lang="java">

import java.security.AlgorithmParameters; import java.security.Security; import java.security.Signature; import java.security.spec.PSSParameterSpec; import org.bouncycastle.asn1.ASN1InputStream; import org.bouncycastle.asn1.util.ASN1Dump; public class MainClass {

 public static void main(String[] args) throws Exception {
   Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
   Signature signature = Signature.getInstance("SHA1withRSAandMGF1", "BC");
   signature.setParameter(PSSParameterSpec.DEFAULT);
   AlgorithmParameters params = signature.getParameters();
   ASN1InputStream aIn = new ASN1InputStream(params.getEncoded("ASN.1"));
   System.out.println(ASN1Dump.dumpAsString(aIn.readObject()));
 }

}</source>





Use SHA1

   <source lang="java">

import java.io.BufferedInputStream; import java.io.FileInputStream; import java.security.DigestInputStream; import java.security.MessageDigest; public class MainClass {

 private static int BUFFER_SIZE = 32 * 1024;
 public static void main(String[] args) throws Exception {
   System.out.println("test.txt: " + md("test.txt"));
 }
 public static String md(String f) throws Exception {
   BufferedInputStream file = new BufferedInputStream(new FileInputStream(f));
   MessageDigest md = MessageDigest.getInstance("SHA-1");
   DigestInputStream in = new DigestInputStream(file, md);
   int i;
   byte[] buffer = new byte[BUFFER_SIZE];
   do {
     i = in.read(buffer, 0, BUFFER_SIZE);
   } while (i == BUFFER_SIZE);
   md = in.getMessageDigest();
   in.close();
   return new String(md.digest());
 }

}</source>