社区
Java SE
帖子详情
求一段对称加密的源代码,如DES。
topbit
2003-08-26 09:00:18
求一段对称加密的源代码,如DES。
...全文
92
1
打赏
收藏
求一段对称加密的源代码,如DES。
求一段对称加密的源代码,如DES。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NetixChina
2003-08-26
打赏
举报
回复
package sample.crypto;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.KeyGenerator;
import javax.crypto.BadPaddingException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.spec.SecretKeySpec;
public final class SymmetryCryptographerSample
extends Object
{
public static void main(String[] args)
throws IOException,
BadPaddingException,
InvalidKeyException,
ClassNotFoundException,
NoSuchPaddingException,
NoSuchAlgorithmException,
IllegalBlockSizeException
{
KeyGenerator keyGenerator = null;
String keyFileName = null;
String encodingFileName = null;
String resultFileName = null;
String sourceFileName = null;
SecretKey key = null;
SecretKeySpec keySpec = null;
byte[] encoding = null;
Cipher cipher = null;
byte[] source = null;
byte[] result = null;
for (int i = 0; i<CRYPTOGRAPHERS.length; i++)
{
keyFileName =
KEY_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
encodingFileName =
ENCODING_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
keyGenerator = KeyGenerator.getInstance(
CRYPTOGRAPHERS[i]);
saveKey(keyGenerator, keyFileName);
key = loadKey(keyFileName);
encoding = key.getEncoded();
saveKeyEncoding(key, encodingFileName);
resultFileName =
RESULT_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
cipher = Cipher.getInstance(CRYPTOGRAPHERS[i]);
cipher.init(Cipher.ENCRYPT_MODE, key);
source = loadSource(getSourceFile());
result = cipher.doFinal(source);
saveResult(result, resultFileName);
sourceFileName =
SOURCE_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
encoding = loadKeyEncoding(encodingFileName);
keySpec =
new SecretKeySpec(encoding, CRYPTOGRAPHERS[i]);
cipher = Cipher.getInstance(CRYPTOGRAPHERS[i]);
cipher.init(Cipher.DECRYPT_MODE, key);
result = loadResult(resultFileName);
source = cipher.doFinal(result);
saveSource(source, sourceFileName);
}
}
private static void saveKey(
KeyGenerator keyGenerator,
String keyFileName)
throws IOException
{
FileOutputStream outFile =
new FileOutputStream(keyFileName);
ObjectOutputStream outObject =
new ObjectOutputStream(outFile);
SecretKey key = keyGenerator.generateKey();
outObject.writeObject(key);
outObject.close();
outFile.close();
}
private static SecretKey loadKey(
String keyFileName)
throws IOException,
ClassNotFoundException
{
FileInputStream inFile =
new FileInputStream(keyFileName);
ObjectInputStream inObject =
new ObjectInputStream(inFile);
Object object = inObject.readObject();
return (SecretKey)object;
}
private static void saveKeyEncoding(
SecretKey key,
String encodingFileName)
throws IOException
{
FileOutputStream outFile =
new FileOutputStream(encodingFileName);
ObjectOutputStream outObject =
new ObjectOutputStream(outFile);
outObject.write(key.getEncoded());
outObject.close();
outFile.close();
}
private static byte[] loadKeyEncoding(
String encodingFileName)
throws IOException,
ClassNotFoundException
{
FileInputStream inFile =
new FileInputStream(encodingFileName);
ByteArrayOutputStream outByteArray =
new ByteArrayOutputStream();
int i = -1;
while ((i = inFile.read())!=-1)
outByteArray.write((byte)i);
return outByteArray.toByteArray();
}
private static void saveSource(
byte[] source,
String fileName)
throws IOException
{
FileOutputStream outFile =
new FileOutputStream(fileName);
outFile.write(source);
outFile.close();
}
private static byte[] loadSource(File file)
throws IOException
{
FileInputStream inFile = new FileInputStream(file);
ByteArrayOutputStream outByteArray =
new ByteArrayOutputStream();
int i = -1;
while ((i = inFile.read())!=-1)
outByteArray.write((byte)i);
return outByteArray.toByteArray();
}
private static void saveResult(
byte[] result,
String fileName)
throws IOException
{
FileOutputStream outFile =
new FileOutputStream(fileName);
outFile.write(result);
outFile.close();
}
private static byte[] loadResult(
String fileName)
throws IOException
{
FileInputStream inFile = new FileInputStream(fileName);
ByteArrayOutputStream outByteArray =
new ByteArrayOutputStream();
int i = -1;
while ((i = inFile.read())!=-1)
outByteArray.write((byte)i);
return outByteArray.toByteArray();
}
private static String[] getCryptographers()
{
return CRYPTOGRAPHERS;
}
private static File getSourceFile()
throws IOException
{
return new File("Source.txt");
}
private static final String[] CRYPTOGRAPHERS =
new String[]
{
"Blowfish",
"DES",
"DESede",
//"HmacMD5",
//"HmacSHA1",
"AES"
};
private static final String KEY_FILE_NAME =
"SymmetryKey_";
private static final String ENCODING_FILE_NAME =
"SymmetryEncoding_";
private static final String RESULT_FILE_NAME =
"SymmetryResult_";
private static final String SOURCE_FILE_NAME =
"SymmetrySource_";
private SymmetryCryptographerSample()
{
super();
}
}
计算机信息安全对称密钥加密
DES
源代码
(C++版)
【用C++6.0可直接使用】 1、
DES
算法工作的基本原理:
DES
是基于Feistel密码结构的分组密码,其 入口参数有三个:key、data、mode。 其中,key为加密/解密时使用的 密钥;data为加密/解密的数据;mode为其工作模式:当模式为加密模 式时,明文按照64位进行分组,形成明文分组,此时key用于对数据 加密;当模式为解密模式时,key用于对64位的密文分组进行解密,以 恢复明文。
DES
加密软件
源代码
这是一个用于windows系统下的各种格式文件的加密解密的软件,使用
DES
/3
DES
对称加密
算法实现的加密功能
C语言实现的
DES
对称加密
算法
C语言实现的
DES
对称加密
算法,老师布置的实验作业,原创,花了不少时间才调试成功。
DES
加密算法
源代码
--好用啊~!
当前成熟的加密算法之一,加密能力较强,采用
对称加密
des
加密算法 C语言源码
des
加密算法 C语言源码 基于对称密码学的加密算法 网络安全加密
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章