- 浏览: 278473 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
tan_1208815066:
传送pdf 的文件 不能正确的 传送
试试用Socket传文件 -
richardri:
结果是0怎么解决?支持mov、mp4、3gp吗?
JAVA獲取視頻文件的播放長度 -
zhujia130:
xiaoyaodandan 写道结果是0.。。。。。你给的路径 ...
JAVA獲取視頻文件的播放長度 -
xiaoyaodandan:
结果是0.。。。。。
JAVA獲取視頻文件的播放長度 -
flowerjacky:
明了
Java事务处理类
package cn.lake.util; /** * Java对称加密编码:IDEA * * @author lake_xie * */ class IDEADemo { /* 源数据 */ private byte m_string[]; /* 目标数据 */ private byte c_string[]; /* 密钥 */ private byte k_string[]; /* 数据块 1, 2, 3, 4 */ private char X1, X2, X3, X4; /* 加密子密钥 */ private char Z[]; /* 解密子密钥 */ private char Z_1[]; /* */ private char temp1, temp2, temp3, temp4, temp5; private char temp6, temp7, temp8, temp9, temp10; /* 初始化 */ IDEADemo() { m_string = new byte[8]; c_string = new byte[8]; k_string = new byte[16]; Z = new char[53]; Z_1 = new char[53]; } /* */ private char inv(char x) { char t0, t1, q, y; if (x <= 1) return x; /* 0 and 1 are self-inverse */ t1 = (char) (0x10001 / x); /* Since x >= 2, this fits into 16 bits */ y = (char) (0x10001 % x); if (y == 1) return (char) (1 - t1); t0 = 1; do { q = (char) (x / y); x = (char) (x % y); t0 += (char) (q * t1); if (x == 1) return t0; q = (char) (y / x); y = (char) (y % x); t1 += (char) (q * t0); } while (y != 1); return (char) (1 - t1); } /* */ private char multiply(char input1, char input2) { long p = input1 * input2; if (p == 0) input2 = (char) (65537 - input1 - input2); else { input1 = (char) (p >> 16); input2 = (char) p; input1 = (char) (input2 - input1); if (input2 < input1) input1 += 65537; } return input1; } /* */ private void Separate_m_2_X() { // 本函数的目的是从m string中得到X1,X2,X3,X4 // get X1,X2,X3,X4 from m string char temp; X1 = (char) m_string[0]; X1 <<= 8; temp = (char) m_string[1]; temp &= 0xFF; X1 |= temp; X2 = (char) m_string[2]; X2 <<= 8; temp = (char) m_string[3]; temp &= 0xFF; X2 |= temp; X3 = (char) m_string[4]; X3 <<= 8; temp = (char) m_string[5]; temp &= 0xFF; X3 |= temp; X4 = (char) m_string[6]; X4 <<= 8; temp = (char) m_string[7]; temp &= 0xFF; X4 |= temp; } /** * 设置密钥 * * @param input_k_string * input the 128bit key(16 byte) * @return No return value */ void Set_k(byte[] input_k_string) { // 本函数的目的是设置密钥 for (int i = 0; i <= 15; i++) k_string[i] = input_k_string[i]; } /** * 加密用子密钥运算 * * @param No * param * @return No return value */ void Creat_encrypt_sub_k() { // 本函数的目的是生成加密子密钥 // creat encrypt sub key and store to Z[57] char temp; byte temp1, temp2, temp3; int i; int num; for (num = 0; num <= 6; num++) { Z[1 + num * 8] = (char) k_string[0]; Z[1 + num * 8] <<= 8; temp = (char) k_string[1]; temp = (char) (temp & 0x00FF); Z[1 + num * 8] |= temp; Z[2 + num * 8] = (char) k_string[2]; Z[2 + num * 8] <<= 8; temp = (char) k_string[3]; temp = (char) (temp & 0x00FF); Z[2 + num * 8] |= temp; Z[3 + num * 8] = (char) k_string[4]; Z[3 + num * 8] <<= 8; temp = (char) k_string[5]; temp = (char) (temp & 0x00FF); Z[3 + num * 8] |= temp; Z[4 + num * 8] = (char) k_string[6]; Z[4 + num * 8] <<= 8; temp = (char) k_string[7]; temp = (char) (temp & 0x00FF); Z[4 + num * 8] |= temp; if (num != 6) { Z[5 + num * 8] = (char) k_string[8]; Z[5 + num * 8] <<= 8; temp = (char) k_string[9]; temp = (char) (temp & 0x00FF); Z[5 + num * 8] |= temp; } if (num != 6) { Z[6 + num * 8] = (char) k_string[10]; Z[6 + num * 8] <<= 8; temp = (char) k_string[11]; temp = (char) (temp & 0x00FF); Z[6 + num * 8] |= temp; } if (num != 6) { Z[7 + num * 8] = (char) k_string[12]; Z[7 + num * 8] <<= 8; temp = (char) k_string[13]; temp = (char) (temp & 0x00FF); Z[7 + num * 8] |= temp; } if (num != 6) { Z[8 + num * 8] = (char) k_string[14]; Z[8 + num * 8] <<= 8; temp = (char) k_string[15]; temp = (char) (temp & 0x00FF); Z[8 + num * 8] |= temp; } // now,start to left move 25 bit // first left move 24 bit temp1 = k_string[0]; temp2 = k_string[1]; temp3 = k_string[2]; for (i = 0; i <= 12; i++) k_string[i] = k_string[i + 3]; k_string[13] = temp1; k_string[14] = temp2; k_string[15] = temp3; // then left move 1 bit,sum 25 bit byte store_bit[] = new byte[16]; // store k_strings first bit. for (i = 15; i >= 0; i--) { // from high bit to low store_bit[i] = (byte) (k_string[i] >> 7); store_bit[i] &= 0x01; k_string[i] <<= 1; if (i != 15) k_string[i] += store_bit[i + 1]; } k_string[15] += store_bit[0]; // complete to left move 25 bit } // All encrypt sub key created } /** * 解密子密钥计算 * * @param No * param * @return No return value */ void Creat_decrypt_sub_k() { // 本函数的目的是生成解密子密钥 Z_1[1] = inv(Z[49]); Z_1[2] = (char) (0 - Z[50]); Z_1[3] = (char) (0 - Z[51]); Z_1[4] = inv(Z[52]); Z_1[5] = (char) (Z[47]); Z_1[6] = Z[48]; for (int i = 1; i <= 7; i++) { Z_1[1 + i * 6] = inv(Z[49 - i * 6]); Z_1[2 + i * 6] = (char) (0 - Z[51 - i * 6]); Z_1[3 + i * 6] = (char) (0 - Z[50 - i * 6]); Z_1[4 + i * 6] = inv(Z[52 - i * 6]); Z_1[5 + i * 6] = Z[47 - i * 6]; Z_1[6 + i * 6] = Z[48 - i * 6]; } Z_1[49] = inv(Z[1]); Z_1[50] = (char) (0 - Z[2]); Z_1[51] = (char) (0 - Z[3]); Z_1[52] = inv(Z[4]); } /** * 设置源数据 * * @param input_m_string * input the source data to be processed * @return No return value */ void Set_m(byte[] input_m_string) { // 本函数的目的是设置源数据 for (int i = 0; i <= 7; i++) m_string[i] = input_m_string[i]; } /** * 加密运算 * * @param No * param * @return No return value */ void Encrypt() { // 本函数的目的是加密 // 把m分成X1,X2,X3,X4 Separate_m_2_X(); // 下面做8圈叠代 for (int num = 0; num <= 7; num++) { temp1 = multiply(Z[1 + num * 6], X1); // 1 temp2 = (char) (X2 + Z[2 + num * 6]); // 2 temp3 = (char) (X3 + Z[3 + num * 6]); // 3 temp4 = multiply(Z[4 + num * 6], X4); // 4 temp5 = (char) (temp1 ^ temp3); // 5 temp6 = (char) (temp2 ^ temp4); // 6 temp7 = multiply(Z[5 + num * 6], temp5); // 7 temp8 = (char) (temp7 + temp6); temp10 = multiply(Z[6 + num * 6], temp8); temp9 = (char) (temp7 + temp10); X1 = (char) (temp1 ^ temp10); if (num != 7) { X2 = (char) (temp3 ^ temp10); X3 = (char) (temp2 ^ temp9); } else { X2 = (char) (temp2 ^ temp9); X3 = (char) (temp3 ^ temp10); } X4 = (char) (temp4 ^ temp9); } // end of 8 times // 输出变换 X1 = multiply(Z[49], X1); X2 += Z[50]; X3 += Z[51]; X4 = multiply(Z[52], X4); // 把X1,X2,X3,X4复制到c_string中。 // now,creat c_string from X1..X4; c_string[1] = (byte) X1; c_string[0] = (byte) (X1 >> 8); c_string[3] = (byte) X2; c_string[2] = (byte) (X2 >> 8); c_string[5] = (byte) X3; c_string[4] = (byte) (X3 >> 8); c_string[7] = (byte) X4; c_string[6] = (byte) (X4 >> 8); // end of encryption } /** * 解密运算 * * @param No * param * @return No return value */ void Decrypt() { // 本函数的目的是解密 // 把m分成X1,X2,X3,X4 Separate_m_2_X(); // 下面做8圈叠代 for (int num = 0; num <= 7; num++) { temp1 = multiply(Z_1[1 + num * 6], X1); // 1 temp2 = (char) (X2 + Z_1[2 + num * 6]); // 2 temp3 = (char) (X3 + Z_1[3 + num * 6]); // 3 temp4 = multiply(Z_1[4 + num * 6], X4); // 4 temp5 = (char) (temp1 ^ temp3); // 5 temp6 = (char) (temp2 ^ temp4); // 6 temp7 = multiply(Z_1[5 + num * 6], temp5); // 7 temp8 = (char) (temp7 + temp6); temp10 = multiply(Z_1[6 + num * 6], temp8); temp9 = (char) (temp7 + temp10); X1 = (char) (temp1 ^ temp10); if (num != 7) { X2 = (char) (temp3 ^ temp10); X3 = (char) (temp2 ^ temp9); } else { X2 = (char) (temp2 ^ temp9); X3 = (char) (temp3 ^ temp10); } X4 = (char) (temp4 ^ temp9); } // end of 8 times // 输出变换 X1 = multiply(Z_1[49], X1); X2 += Z_1[50]; X3 += Z_1[51]; X4 = multiply(Z_1[52], X4); // 把X1,X2,X3,X4复制到c_string中。 // now,creat c_string from X1..X4; c_string[1] = (byte) X1; c_string[0] = (byte) (X1 >> 8); c_string[3] = (byte) X2; c_string[2] = (byte) (X2 >> 8); c_string[5] = (byte) X3; c_string[4] = (byte) (X3 >> 8); c_string[7] = (byte) X4; c_string[6] = (byte) (X4 >> 8); // end of decryption } /** * 结果输出 * * @param output_c_string * output the result * @return No return value */ void Get_c(byte[] output_c_string) { // 本函数的目的是获得目标数据 for (int i = 0; i <= 7; i++) output_c_string[i] = c_string[i]; } public static void main(String[] args) { int i; IDEADemo demoTest = new IDEADemo(); byte[] m = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; byte[] k = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6 }; byte[] c = new byte[8]; demoTest.Set_k(k); demoTest.Creat_encrypt_sub_k(); demoTest.Creat_decrypt_sub_k(); System.out.println("密钥:"); for (i = 0; i <= 15; i++) System.out.print(k[i]); System.out.println(""); demoTest.Set_m(m); System.out.println("明文:"); for (i = 0; i <= 7; i++) System.out.print(m[i]); System.out.println(""); demoTest.Encrypt(); demoTest.Get_c(c); System.out.println("密文:"); for (i = 0; i <= 7; i++) System.out.print((int) (c[i]) + " "); System.out.println(""); demoTest.Set_m(c); demoTest.Decrypt(); demoTest.Get_c(c); System.out.println("解密后明文:"); for (i = 0; i <= 7; i++) System.out.print(c[i]); System.out.println(""); System.out.println("hello!"); } }
发表评论
-
junit实现测试类(在Spring2.5中)
2009-01-17 15:14 2412第一步: 创建JAVA项目,也可以是Web项目,加入Sprin ... -
HttpClient Examples:Custom protocol interceptors
2009-01-15 14:06 1512官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Custom SSL context
2009-01-15 13:58 2032官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Threaded request execution
2009-01-15 13:54 1482官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Form based logon
2009-01-15 13:49 2006官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Custom execution context
2009-01-15 13:46 1556官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Chunk encoded POST
2009-01-15 12:36 2191官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Proxy authentication
2009-01-15 12:26 1397官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Request via a proxy
2009-01-15 12:19 2240官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Abort method
2009-01-15 12:06 1599官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Manual connection release
2009-01-15 11:54 1200官方主頁:http://hc.apache.org/ Co ... -
HttpClient Examples:Response handling
2009-01-15 11:44 2334官方主頁:http://hc.apache.org/ Co ... -
使用commons-codec包加密字符串(MD5,SHA1,BASE64)
2009-01-13 13:56 8239commons-codec包可以从apache下载,最新版是1 ... -
Java对称加密编码:BESA64
2009-01-13 10:58 2511package cn.lake.util; import s ... -
用java获得你电脑中的cpu数量
2009-01-13 10:41 2380System.out.println("你的电脑cp ... -
JAVA的国际化问题讨论
2008-12-18 15:05 1059一切有一个问题相当苦脑:JAVA的国际化问题; 如 ... -
客户请求的浏览器类型
2008-12-17 00:17 926<td width="50%"> ... -
同时启动多个resion
2008-12-09 15:55 1016在本地同时启动多个Resin,要修改2个文件,总共是3个处 一 ... -
JSP基本语法加实例
2008-12-09 13:38 1620应作者要求:【转】http://www.cnblogs.com ... -
struts标签logic
2008-12-08 16:32 1550<!--######################## ...
相关推荐
IDEA(International Data Encryption Algorithm,国际数据加密算法)是一种高效且安全的对称加密算法,以其快速和强大的安全性在许多应用场景中得到广泛应用。在Oracle数据库中实现IDEA加密,可以确保存储在数据库...
通过使用这款软件,就能帮助用户对编解码、编码转换、字符处理、哈希、MAC、对称加密、非对加密。软件是用Java语言编写的,要运行该软件,需要安装JDK环境。安装好JDK环境后,直接运行解压目录下的ToolsFx .bat文件...
DesDemo: 展示了DES对称加密算法的基本实现,包括加密和解密操作。 IDEADemo: 演示了如何使用IDEA加密算法进行加密和解密,包括密钥生成和转换。 MD5Demo: 提供了一个MD5哈希算法的实现,展示了如何计算字符串的...
在Java的JDK中,提供了多种加密方法,包括对称加密和非对称加密。这里我们主要讨论对称加密,因为它是Java中最常用且基础的加密方式。 对称加密是一种使用同一密钥进行加密和解密的加密技术。它的优点在于加解密...
"IDEA:Java实现的国际数据加密算法" 指的是这个项目是用Java编程语言实现的一种名为IDEA(International Data Encryption Algorithm)的加密算法。IDEA是一种对称密钥加密算法,它在数据加密领域中被广泛应用,提供...
IDEA加密算法是一种高效的对称加密算法,在JAVA环境中实现IDEA不仅可行而且具有较高的安全性。通过利用JAVA提供的加密库(如JCA和JCE),开发者可以轻松地实现IDEA算法,并确保其实现的安全性和性能。尽管IDEA在某些...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据传输的安全性上。这个Java实现的示例提供了RSA加密和解密的功能,并且结合了`sun.misc.BASE64Decoder.jar`来处理Base64编码,使得加密后...
在这个项目中,我们关注的是使用Scala实现的3DES(Triple Data Encryption Standard)加密算法,这是一种广泛使用的对称加密算法,常用于保护敏感数据,如数据库中的用户名和密码。 3DES,也称为TDES或3DES-EDE(三...
DES(Data Encryption Standard)是一种对称加密算法,使用64位的数据分组,56位的密钥,并且加密和解密使用相同的算法,只是密钥不同。尽管DES现在已经不够安全,但作为示例,它可以用来演示Java中如何实现加解密...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,例如数据加密、数字签名等。该算法基于两个大素数的乘积是难以分解的数学难题,从而实现加密和解密。在这个"RSA_JS_JAVA"项目中,我们看到涉及到...
1. **开发工具**:可能使用IDEA、Eclipse等Java集成开发环境进行编码和调试。 2. **版本控制**:如Git,用于代码版本管理和协作。 3. **构建工具**:Maven或Gradle,帮助管理依赖,自动化构建和打包项目。 4. **测试...
### 字符串加密算法详解 #### 一、引言 在信息安全领域,字符串加密是...Java AES加密算法作为一种广泛使用的对称加密算法,不仅适用于保护数据的机密性和完整性,而且其实现相对简单,易于集成到各种应用程序中。
RSA是一种非对称加密算法,广泛应用于公钥基础设施(PKI)中,而SM2是中国国家标准的公钥密码算法,支持签名、加密和密钥交换。在Java中,`java.security.KeyPairGenerator`类可以用来生成RSA或SM2的密钥对,而`...
1. **加密算法支持**:`org.bouncycastle`提供了大量的对称和非对称加密算法,例如AES(高级加密标准)、Blowfish、DES(数据加密标准)、3DES(三重DES)、RSA(公钥加密标准)、DSA(数字签名算法)等。...
17. **编码与加解密**:Base64用于编码,MD5用于消息摘要,对称加密如AES,非对称加密如RSA,为数据传输提供安全性。 18. **测试与日志**:JUnit用于单元测试,log4j等工具用于记录程序运行日志。 19. **IDE**:...
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,用于保护数据安全。开发者可能需要这样的工具来加密敏感信息,如数据库密码或用户数据。Java提供内置的javax.crypto包来实现AES加密,通过定义...
IDEA则是一种对称加密算法,提供快速的数据加密。 2. **数字签名**:PGP 提供了数字签名功能,通过用户的私钥对数据进行签名,任何人都可以使用对应的公钥验证签名的真实性,确保信息未被篡改。 3. **密钥管理**:...
1. **加密算法**:在Cipher Program中,你可能需要实现或使用已有的加密算法,如对称加密(如AES,DES)或非对称加密(如RSA,ECC)。这些算法在信息安全领域起着至关重要的作用,用于保护数据的隐私和完整性。 2. ...
- RSA是一种非对称加密算法,C#和Java都支持,但它们在存储和表示密钥的方式上有差异。 - C#使用XML字符串存储公私钥,而Java通常采用PKCS#8(私钥)和X.509(公钥)格式,这些格式基于ASN.1编码规则。 5. **密钥...