⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jm_java.java

📁 JAVA编写的加密程序
💻 JAVA
字号:
package data; 
import java.security.*; 
import javax.crypto.*; 
import javax.crypto.spec.*; 
import java.io.*; 

/** 
* Security 提供了一个安全算法类,其中包括对称密码算法和散列算法 
*/ 
public final class Security 
{ 
/** 
  * 对称加密方法 
  * @param byteSource 需要加密的数据 
  * @return 经过加密的数据 
  * @throws Exception 
  */ 
public static byte[] symmetricEncrypto(byte[] byteSource) throws Exception 
{ 
  ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
  try 
  { 
   int mode = Cipher.ENCRYPT_MODE; 
   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); 
   byte[] keyData = {1, 9, 8, 2, 0, 8, 2, 1}; 
   DESKeySpec keySpec = new DESKeySpec(keyData); 
   Key key = keyFactory.generateSecret(keySpec); 
   Cipher cipher = Cipher.getInstance("DES"); 
   cipher.init(mode, key); 
   int blockSize = cipher.getBlockSize(); 
   int position = 0; 
   int length = byteSource.length; 
   boolean more = true; 
   while(more) 
   { 
    if(position + blockSize <= length) 
    { 
     baos.write(cipher.update(byteSource, position, blockSize)); 
     position += blockSize; 
    } 
    else 
    { 
     more = false; 
    } 
   } 
   if(position < length) 
   { 
    baos.write(cipher.doFinal(byteSource, position, length - position)); 
   } 
   else 
   { 
    baos.write(cipher.doFinal()); 
   } 
   return baos.toByteArray(); 
  } 
  catch(Exception e) 
  { 
   throw e; 
  } 
  finally 
  { 
   baos.close(); 
  } 
} 
/** 
  * 对称解密方法 
  * @param byteSource 需要解密的数据 
  * @return 经过解密的数据 
  * @throws Exception 
  */ 
public static byte[] symmetricDecrypto(byte[] byteSource) throws Exception 
{ 
  ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
  try 
  { 
   int mode = Cipher.DECRYPT_MODE; 
   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); 
   byte[] keyData = {1, 9, 8, 2, 0, 8, 2, 1}; 
   DESKeySpec keySpec = new DESKeySpec(keyData); 
   Key key = keyFactory.generateSecret(keySpec); 
   Cipher cipher = Cipher.getInstance("DES"); 
   cipher.init(mode, key); 
   int blockSize = cipher.getBlockSize(); 
   int position = 0; 
   int length = byteSource.length; 
   boolean more = true; 
   while(more) 
   { 
    if(position + blockSize <= length) 
    { 
     baos.write(cipher.update(byteSource, position, blockSize)); 
     position += blockSize; 
    } 
    else 
    { 
     more = false; 
    } 
   } 
   if(position < length) 
   { 
    baos.write(cipher.doFinal(byteSource, position, length - position)); 
   } 
   else 
   { 
    baos.write(cipher.doFinal()); 
   } 
   return baos.toByteArray(); 
  } 
  catch(Exception e) 
  { 
   throw e; 
  } 
  finally 
  { 
   baos.close(); 
  } 
} 
/** 
  * 散列算法 
  * @param byteSource 需要散列计算的数据 
  * @return 经过散列计算的数据 
  * @throws Exception 
  */ 
public static byte[] hashMethod(byte[] byteSource) throws Exception 
{ 
  try 
  { 
   MessageDigest currentAlgorithm = MessageDigest.getInstance("SHA-1"); 
   currentAlgorithm.reset(); 
   currentAlgorithm.update(byteSource); 
   return currentAlgorithm.digest(); 
  } 
  catch(Exception e) 
  { 
   throw e; 
  } 
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -