`
JasonShieh
  • 浏览: 527442 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对IP进行四位加密

    博客分类:
  • JAVA
 
阅读更多
由于某种需要,需要对0-255的IP进行四位转换,例如255转为类似“vc52”这样的四个字符的字符串。
public class Base36 {
	private final static int addition = 100000;
	private final static byte[] Base36 = {
			(byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4',
			(byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9',
			(byte) 'A', (byte) 'B',	(byte) 'C', (byte) 'D', (byte) 'E',
			(byte) 'F', (byte) 'G', (byte) 'H', (byte) 'I', (byte) 'J', 
			(byte) 'K', (byte) 'L',	(byte) 'M', (byte) 'N', (byte) 'O',
			(byte) 'P', (byte) 'Q',	(byte) 'R', (byte) 'S', (byte) 'T',
			(byte) 'U', (byte) 'V',	(byte) 'W', (byte) 'X', (byte) 'Y',
			(byte) 'Z'
	};
	private static int transform(int base){
		int level = addition;
		base += level;
		System.out.println(base);
		return base;
	}
	public static String encode(int dex){
		dex = transform(dex);
		StringBuilder code36 = new StringBuilder();
		int quotient = dex;
		int remainder = 0;
		char temp = '0';
		while((quotient / 36) > 0){
			remainder = quotient % 36;
			temp = (char) Base36[remainder];
			code36.append(temp);
			quotient = quotient / 36;
		}
		if((remainder = quotient % 36) > 0){
			code36.append((char) Base36[remainder]);
		}
		return code36.toString();
	}
	
	public static int decode(String code){
		int base = 0;
		int level = 0;
		for(int i = 0; i < code.length(); i++){
			level = getIndex((byte) code.charAt(i));
			if(i == 0){
				base += level;
			} else if(i == 1){
				base += level * 36;
			} else if(i == 2){
				base += level * 36*36;
			} else if(i == 3){
				base += level * 36*36*36;
			}
		}
		System.out.println(base);
		base %= addition;
		return base;
	}
	
	private static int getIndex(byte code){
		code = change2UpCase(code);
		int index = 0;
		for(int i = 0; i < Base36.length; i++){
			if(Base36[i] == code){
				index = i;
				break;
			}
		}
		return index;
	}
	
	private static byte change2UpCase(byte code){
		if(code >= 'a' && code <= 'z'){
			code = (byte) (code - 32);
		}
		return code;
	}
	
	public static void main(String[] args) {
//		String result = encode(255);
//		System.out.println(result);
		System.out.println(decode("vC52"));
	}
}
分享到:
评论

相关推荐

    易语言简单IP加密还原

    在某些情况下,为了保护隐私或安全,我们需要对IP地址进行加密处理,这可以通过各种加密算法实现。易语言提供了丰富的内置函数和模块,支持开发者自定义算法来完成这一任务。 IP加密可以采用对称加密或非对称加密...

    DES源代码(可用于银行卡号加密、IP地址加密)

    3. **数据分组**:输入的数据被分为64位的块进行处理,DES只能对64位的数据进行操作。 4. **初始置换**(IP):64位输入数据经过一个固定置换表,改变数据的原始顺序。 5. **16轮迭代**:每一轮包括子密钥产生、...

    DES加密算法实验

    - **密钥规格**:使用56位密钥进行加密。 - **核心安全特性** - **混淆**:使得明文与密文之间的关系复杂化,难以通过数学方法解析。 - **扩散**:明文与密钥中的任何一位变化都能导致密文中多位的变化,增强安全...

    DES加密C语言实现的

    3. **逆初始置换(IP^-1)**:在16轮迭代结束后,对最后的32位数据进行逆初始置换,得到最终的密文。 在C语言中实现DES加密,你需要定义数据结构来存储明文和密文,创建函数处理上述各个步骤,并考虑如何读取和写入...

    C++实现IP数据包解析程序

    本文档主要介绍了使用C++语言实现IP数据包解析程序的设计和实现,程序代码包括了对IP头的逐位解析,包括版本、服务类型、总长度、标识、旗标、分段偏移、生命周期、协议、头校验和、源地址、目的地址等信息的解析。...

    对主机的mac地址MD5加密

    ### 对主机的MAC地址进行MD5加密的知识点详解 #### 一、背景介绍 在网络安全领域,为了确保数据传输的安全性以及验证数据源的真实性和完整性,通常会采用各种加密技术来保护敏感信息不被非法窃取或篡改。其中一种...

    FPGA 四位并行乘法器

    1. **二进制乘法规则**:理解二进制乘法的基本原理,包括如何将两个四位二进制数逐位相乘,以及如何进行位移和加法操作来获得最终结果。 2. **逻辑门设计**:并行乘法器的底层是各种逻辑门(如与门、或门、异或门、...

    DES加密算法的原创C语言程序

    - **替换函数(Permutation Function, P盒)**:使用S盒对32位输入进行非线性变换。 - **异或操作(XOR)**:将S盒的结果与48位子密钥异或。 - **逆初始置换(Inverse IP)**:对上一步的结果进行逆操作,恢复...

    DES加密算法详解

    DES算法采用相同的密钥进行加密和解密,其核心在于使用一个56位的密钥对64位的数据块进行加密。尽管随着技术的发展,DES已经逐渐被更安全的算法如AES所取代,但它仍然是理解对称加密原理的一个重要案例。 #### 二、...

    dec 加密算法

    它采用的是对称加密机制,使用56位密钥对64位的数据块进行加密处理。尽管随着计算机技术的发展,56位密钥长度的DES算法已经被证明安全性不足,并且有诸多关于DES加密文本被破解的报道出现,但了解这一曾经被美国作为...

    用C语言实现的DES加密

    DES加密的核心是使用56位的密钥对64位的数据块进行操作,通过一系列复杂的替换和转换过程,将明文数据转化为无法直接识别的密文。这种加密方式在当时被认为是非常安全的,但随着计算能力的发展,现在DES的安全性已经...

    数据加密标准(DES)matlab程序

    1. **初始置换(IP)**:原始的64位明文被分为左右两半,每半32位,然后进行初始置换,这一步主要是打乱数据的顺序。 2. **轮函数**:这个过程是DES的核心,包括16轮迭代,每轮都包含四个子步骤: - **扩展置换(E...

    MFC实现DES加密解密实现

    2. **初始置换IP**:明文块在加密前先进行一次初始置换,将64位的数据重新排列。 3. **轮函数**:每一轮都包括以下四个步骤: - **子密钥产生**:使用当前轮的子密钥和上一轮的中间结果。 - **半块异或**:将结果...

    实验一 基于DES加密的TCP聊天程序1

    4. **安全性和性能**:尽管DES由于其56位密钥的长度现在被认为是不够安全的,但通过三重DES(3DES)可以提高安全性,它使用三个不同的密钥进行三次加密,以达到更长的密钥长度。然而,3DES的加密速度相对较慢。现代...

    cxd_DES加密_

    3. **逆初始置换(IP^-1)**:在16轮迭代结束后,对左右两半进行逆初始置换,得到最终的64位密文。 在C语言中实现DES加密,你需要创建数据结构来存储原始明文、密钥、中间结果以及置换表。同时,你需要编写函数来...

    3DE加密方式详情

    2. 初始置换(IP):对数据块进行特定的位移操作,打乱数据顺序,增加破解难度。 3. 16轮迭代:每轮包括子密钥生成、扩展置换、异或操作、微操作四个步骤。每个子密钥由主密钥通过一系列置换和异或操作生成。 4. ...

    基于des加密的tcp聊天1

    数据加密标准(DES)是一种对称分组加密算法,它使用56位密钥对64位的数据块进行加密。DES加密过程包括以下几个步骤: - **初始置换IP(Initial Permutation)**:对输入的64位明文进行重新排列。 - **密钥扩展**...

    DES加密解密源代码

    3. **初始置换IP**:这是加密过程的第一步,64位明文通过IP表进行重新排列,打乱数据的原始顺序。 4. **密钥扩展**:DES的56位密钥会被扩展成48位的子密钥,通过一系列置换和选择操作实现,这样在每一轮中都有一个...

Global site tag (gtag.js) - Google Analytics