`
lzkyo
  • 浏览: 468533 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java加密解密--不需要密钥

    博客分类:
  • Java
阅读更多


import java.io.IOException;

public class Encryption
{
private static byte escapeSpecialTok(byte b)
{
byte map[][]={{0x21, 0x61}, {0x22, 0x62}, {0x26, 0x65}, {0x27, 0x66},
          {0x3c, 0x7a}, {0x3e, 0x7b}, {0x3f, 0x7c}, {0x00,0x00}};

for(int i=0; i<map.length; i++) {
if(b==map[i][0])
return map[i][1];
if(b==map[i][1])
return map[i][0];
}
return b;
}

private static byte[] encryptTok(byte[] raw)
{
byte[] cooked=new byte[3];
byte[] byteTemp= new byte[4];

// 0xfc: 11111100, /4: >> 2
byteTemp[0]=(byte)(((int)raw[0] & 0xfc) >> 2 );

// 0x03: 00000011, *8: << 3
byteTemp[1]=(byte)(((int)raw[0]&0x03)<<3);

// 0xe0: 11100000, /32: >> 5
byteTemp[2]=(byte)(((int)raw[1]&0xe0)>>5);

// 0x1f: 00011111
byteTemp[3]=(byte)((int)raw[1] & 0x1f);

cooked[0]=(byte)((int)byteTemp[0]+0x21);
cooked[1]=(byte)((int)(byteTemp[1]|byteTemp[2])+0x21);
cooked[2]=(byte)((int)byteTemp[3]+0x21);

cooked[0]=escapeSpecialTok(cooked[0]);
cooked[1]=escapeSpecialTok(cooked[1]);
cooked[2]=escapeSpecialTok(cooked[2]);

return cooked;
}


public static String encrypt(String strUnicode) throws IOException
{
byte[] bytes, tok;
String strEncrypted;

bytes=strUnicode.getBytes();
tok=new byte[2];
strEncrypted=new String();

for(int i=0; i<bytes.length; i+=2) {
tok[0]=bytes[i];

if(i==bytes.length-1)
tok[1]=0x00;
else
tok[1]=bytes[i+1];

strEncrypted+=new String(encryptTok(tok));
}

return strEncrypted;

}
}          


//解密
public class Decryption
{
private static byte escapeSpecialTok(byte b)
{
byte map[][]={{0x21, 0x61}, {0x22, 0x62}, {0x26, 0x65}, {0x27, 0x66},
          {0x3c, 0x7a}, {0x3e, 0x7b}, {0x3f, 0x7c}, {0x00, 0x00}};

for(int i=0; i<map.length; i++) {
if(b==map[i][0])
return map[i][1];
if(b==map[i][1])
return map[i][0];
}
return b;
}

private static byte[] decryptTok(byte[] raw)
{

byte[] cooked=new byte[2];
byte[] byteTemp= new byte[4];

raw[0]=escapeSpecialTok(raw[0]);
raw[1]=escapeSpecialTok(raw[1]);
raw[2]=escapeSpecialTok(raw[2]);

// 0x3f : 00111111, << 2
byteTemp[0]=(byte)((((int)raw[0] - 0x21) & 0x3f) << 2);

// 0x18 : 00011000, >> 3
byteTemp[1]=(byte)((((int)raw[1] - 0x21) & 0x18) >> 3);

// 0x07 : 00000111, << 5
byteTemp[2]=(byte)((((int)raw[1] - 0x21) & 0x07) << 5);

// 0x1f: 00011111
byteTemp[3]=(byte)(((int)raw[2] - 0x21) & 0x1f);

cooked[0]=(byte)(byteTemp[0]| byteTemp[1]);
cooked[1]=(byte)(byteTemp[2]| byteTemp[3]);

return cooked;
}

public static String decrypt(String strCode) throws IOException
{
byte[] bytes, tok, decStr, tempStr;
String strDecrypted;
 
bytes = strCode.getBytes();
tok = new byte[3];
tempStr =  new byte[3];
decStr = new byte[bytes.length];

strDecrypted = new String();
int j;
j =0;
for(int i=0; i<bytes.length; i+=3)
{
tok[0]=bytes[i];

if(i==bytes.length-2)
{
tok[1]=bytes[i+1];
tok[2]=0x00;
}
else if(i==bytes.length-1)
{
tok[1]=0x00;
tok[2]=0x00;
}
else
{
tok[1]=bytes[i+1];
tok[2]=bytes[i+2];
}
tempStr = decryptTok(tok);
decStr[j]= tempStr[0];
j++;
decStr[j]= tempStr[1];
j++;
}
strDecrypted = new String(decStr);
return strDecrypted.trim();
}
}          

                                                                                                                                  
分享到:
评论

相关推荐

    JAVA加密解密-3

    本教程"JAVA加密解密-3"聚焦于如何在Java环境中实现文件的加密和解密功能。以下是一些核心知识点: 1. **加密的基本概念**:加密是将明文数据转化为不可读的密文,以防止未经授权的访问。解密则是将密文还原为原始...

    java加密解密zip压缩包

    总结来说,实现“java加密解密zip压缩包”项目,你需要理解Java的IO流、加密API以及如何结合使用这些工具来创建和读取加密的ZIP文件。同时,了解AS3的加密和ZIP处理机制,以便在需要的时候在AS3环境中解密这些文件。...

    java加密和解密的方法

    java加密和解密的方法,利用指定的密钥,可逆的。密钥必须16位。

    java字符串-用户名和密码-加密解密

    本示例通过Java实现了字符串的加密与解密功能,采用DES加密算法,提供了基本的加密解密功能及字符串与十六进制之间的转换。这种实现方式适用于简单的加密需求,但对于更复杂的安全场景,建议考虑使用更先进的加密...

    java加密解密工具

    Java加密解密工具是开发过程中不可或缺的部分,尤其是在处理敏感数据时,确保数据的安全性至关重要。在Java中,我们可以使用各种库和内置API来实现加密和解密操作。本篇文章将深入探讨Java加密解密的核心概念、常用...

    JAVA实现AES加密和解密

    总的来说,理解并正确使用Java实现AES加密和解密,需要注意秘钥的生成、工作模式的选择、填充方式以及字符编码的一致性,这样才能确保数据的安全传输和正确解密。通过实际操作和实践,你可以更深入地掌握这些知识点...

    JCT - java加密解密工具包.zip_Java加密_java 加密_jct java_加密 解密_加密工具

    Java加密解密工具包,通常用于保护敏感数据的安全,防止未经授权的访问或篡改。这个名为"JCT"的工具包提供了丰富的功能,使得开发者在Java应用中集成加密和解密操作变得更加简单。下面我们将详细探讨Java加密的相关...

    bcprov-jdk15on-1.47.jar Java 加密 解密 jar包

    标题"bcprov-jdk15on-1.47.jar Java 加密 解密 jar包"指的是一个Java加密解密库的jar文件,名为bcprov-jdk15on-1.47.jar。这个文件是用于在Java环境中执行加密和解密操作的,特别适用于那些基于Java 1.5或更高版本的...

    JAVA数据加密解密的实例

    本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...

    java加密解密方法大全

    非对称加密算法解决了密钥分发的问题,不需要安全地交换密钥,但缺点是加密和解密过程速度较慢,适合加密少量数据,如密钥本身或是数字签名。常见的非对称加密算法包括: - **RSA**:一种广泛使用的公钥加密算法,由...

    Java实现的RSA加密解密算法示例

    本文详细介绍了Java实现的RSA加密解密算法,包括密钥对生成、公钥和私钥的使用、加密和解密、密钥文件的生成等知识点。这些知识点对于Java开发者来说非常重要,可以帮助他们更好地理解和实现RSA加密解密算法。

    很强的Java加密解密算法源码.zip

    Java加密解密技术在软件开发中扮演着至关重要的角色,特别是在数据安全领域。3DES(Triple Data Encryption Standard)是一种常见的加密算法,它基于DES(Data Encryption Standard)并对其进行了加强,提高了安全性...

    Java AES128加密解密

    Java中的AES128加密解密是信息安全领域中常见的数据保护技术。AES,全称Advanced Encryption Standard,是一种块密码标准,被广泛应用于各种场景,包括网络传输、存储数据加密等。128位是AES的一个关键参数,表示...

    java实现文件加密解密

    "java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...

    java实现的RC4加密解密算法示例

    java实现的RC4加密解密算法示例提供了一个简单的加密和解密解决方案,但是在实际应用中,需要根据具体情况选择合适的加密算法和密钥管理策略。 此外,本站还提供了各种在线加密解密工具,包括MD5在线加密工具、哈希...

    Java加密算法-公钥加密私钥解密

    2. **Java加密API** Java提供了Java Cryptography Extension (JCE) API来处理加密操作。这个库包括了`javax.crypto`包,其中的`Cipher`类用于执行加密和解密操作。`KeyPairGenerator`用于生成公钥和私钥对,`Key...

    JAVA加密和解密的艺术(第二版).zip

    《JAVA加密和解密的艺术(第二版)》是一本深入探讨Java平台上的加密与解密技术的专业书籍。这本书不仅提供了理论知识,还包含了丰富的实践示例,帮助读者理解和掌握加密技术在实际应用中的运用。其内容涵盖了从基本...

    加密解密-Java加密和数字签名.doc

    Java加密和数字签名是网络安全领域中的重要概念,用于保护数据的隐私和完整性。在Java中,这些技术得到了广泛的应用和支持。 1. **消息摘要**: 消息摘要是一种单向散列函数,用于生成消息的固定长度表示,通常...

    JS前台加密,java后台解密实现

    2. **Java安全策略**:在Java中,需要注意JCE的默认密钥长度限制,对于更强大的加密,可能需要安装不受限制的政策文件。 3. **解密后的安全处理**:解密后的用户信息应存储在安全的地方,并遵循最小权限原则,确保...

Global site tag (gtag.js) - Google Analytics