作者:郭嘉
邮箱:allenwells@163.com
博客:
http://blog.csdn.net/allenwells
github:
https://github.com/AllenWells3
代码加密也是对Java代码进行保护的一种重要方式,作为Java代码加密开篇的文章,本文先举例介绍,如何利用加密算法实现对.class文件进行加密。注意为说明基本原理,本文程序采用命令行进行操作,后续会给出具有UI界面的Java类加密软件。
一 编写Java代码
1.1 生成安全密钥
生成密钥的步骤
-
创建Cipher对象(Java密码扩展包含了
Cipher
类,这个类是所有加密算法的超类。)。 -
设置模式和密钥,生成密钥的步骤如下所示:
- 为加密算法获取KeyGenerator。
- 用随机源来初始化密钥发生器,如果密码块长度是可变的,还需要制定期望的密码块长度。
- 调用generateKey方法。
代码如下所示:
首先写个工具类
FileUtil.java
用于文件读取和写入,源码如下所示:
package com.allenwells.codeencryption.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileUtil
{
/**
* 将文件读入byte数组
*
* @param fileName
* @return
* @throws IOException
*/
static public byte[] fileReadToByteArray(String fileName)
throws IOException
{
File file = new File(fileName);
long fileLength = file.length();
byte fileData[] = new byte[(int) fileLength];
FileInputStream fis = new FileInputStream(file);
int readLength = fis.read(fileData);
if (readLength != fileLength)
{
System.err.println("***Only read " + readLength + " of " + fileLength
+ " for file " + file + " ***");
}
fis.close();
return fileData;
}
/**
* 将byte数组写入到文件
*
* @param fileName
* @param data
* @throws IOException
*/
static public void byteArrayWriteToFile(String fileName, byte[] data)
throws IOException
{
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(data);
fos.close();
}
}
生成密钥文件,可由命令行传入密钥的名字,这里使用key.data,源码如下所示:</
版权声明:本文为AllenWells原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。