`

多种加密算法实现(JAVA)

阅读更多

有短句“Sun Yat-sen University is a vibrant community of scholarship”请用下列方法加密:
简单代替密码(移位密码),k=5q=26
多表代替密码,其中m=6, K=cipher
纵行置换密码,假定每行10个字节。
请写出加密后密文。

 

加密结果:

简单代替加密:Xzs Dfy-xjs Zsnajwxnyd nx f angwfsy htrrzsnyd tk xhmtqfwxmnu

多表代替加密:Ucc Crv-hlr Wvxciiuqif zu p zzdzpux ewbtyekbn sw aroscczhomg

纵向置换加密:Sntbucu yrnhnU aio nintlYistyaav   rteacos-r ofhssvm ieiimsp

 

 

本作业是使用java编程求解的,以为是求解算法(java语言描述):

 

/*
 * 简单代替加密
 */

public class Ssc {
	private String name;
	private int k;
	private int q;
	
	public Ssc(){
		this.k = 5;
		this.q = 26;
		this.name = "简单代替加密";
	}
	/**
	 * k为位移量,q为字母表长度
	 * @param k
	 * @param q
	 */
	public Ssc(int k, int q){
		this.k = k;
		this.q = q;
		this.name = "简单代替加密";
	}
	/**
	 * 加密
	 * @param str
	 * @return
	 */
	public String encrypt(String str){
		String code = "";
		char[] c = str.toCharArray();
		for (int i = 0; i < c.length; i++) {
			int hc = (int)c[i];
			if(hc >= 97 && hc <= 122){
				int t = hc - 97;
				int tt = (t + k) % q;
				hc = 97 + tt;
			}
			if(hc >= 65 && hc <= 90){
				int t = hc - 65;
				int tt = (t + k) % q;
				hc = 65 + tt;
			}
			char temp = (char)hc;
			code += temp;
		}
		return code;
	}
	public int getK() {
		return k;
	}
	public void setK(int k) {
		this.k = k;
	}
	public int getQ() {
		return q;
	}
	public void setQ(int q) {
		this.q = q;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


/*
 * 多表代替加密
 */

public class Psc {
	
	private String name;
	private int m;
	private String K;
	
	public Psc(){
		this.m = 6;
		this.K = "run";
		this.name = "多表代替加密";
	}
	/**
	 * m为密钥长度,K为密钥
	 * @param m
	 * @param K
	 */
	public Psc(int m, String K){
		this.m = m;
		this.K = K;
		this.name = "多表代替加密";
	}
	/**
	 * 加密
	 * @param str
	 * @return
	 */
	public String encrypt(String str){
		String code = "";
		char[] c = str.toCharArray();
		
		char[] k = K.toCharArray();
		
		for (int i = 0; i < c.length; i++) {
			int hc = (int)c[i];
			int ki = i;
			if(i >= k.length){
				ki = i % k.length;
			}
			int kt = k[ki] - 97;
			if(hc >= 97 && hc <= 122){
				int t = hc - 97;
				int tt = (t + kt) % 26;
				hc = 97 + tt;
			}
			if(hc >= 65 && hc <= 90){
				int t = hc - 65;
				int tt = (t + kt) % 26;
				hc = 65 + tt;
			}
			char temp = (char) hc;
			code += temp;
		}
		
		return code;
	}

	public int getM() {
		return m;
	}
	public void setM(int m) {
		this.m = m;
	}
	public String getK() {
		return K;
	}
	public void setK(String k) {
		K = k;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


/*
 * 纵向置换加密
 */

public class Wrc {
	
	private String name;
	private int skip;
	
	public Wrc(){
		this.skip = 10;
		this.name = "纵向置换加密";
	}
	
	/**
	 * skip为间隔
	 * @param skip 
	 */
	public Wrc(int skip){
		this.skip = skip;
		this.name = "纵向置换加密";
	}
	/**
	 * 加密
	 * @param str
	 * @return
	 */
	public String encrypt(String str){
		String code = "";
		
		int len = str.length();
		int group_len = ((len%skip)==0)? len/skip : len/skip + 1;
		char groups[][] = new char[100][100];
		char[] c = str.toCharArray();
		int cc = c.length / skip;
		int cr = c.length % skip;
		if(cr != 0){
			for (int i = 0; i < skip - cr; i++) {
				c[c.length + i] = 0;
			}
		}
		
		for (int i = 0; i < group_len; i++) {
			for (int j = 0; j < skip; j++) {
				groups[i][j] = c[i*skip + j];
//				System.out.print(groups[i][j]);
			}
		}
		
		for (int j = 0; j < skip; j++){
			for (int i = 0; i < group_len; i++) {
				code += groups[i][j];
			}
		}
		
		return code;
	}
	public int getSkip() {
		return skip;
	}
	public void setSkip(int skip) {
		this.skip = skip;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

/*
 * main方法
 */
public class Main {
	public static void main(String[] args) {
		String str ="Sun Yat-sen University is a vibrant community of scholarship";
		Ssc ssc = new Ssc(5, 26);
		System.out.println(ssc.getName() + ":" + ssc.encrypt(str));
		Psc psc = new Psc(6, "cipher");
		System.out.println(psc.getName() + ":" + psc.encrypt(str) );
		Wrc wrc = new Wrc(10);
		System.out.println(wrc.getName() + ":" + wrc.encrypt(str));
	}
}

 

0
0
分享到:
评论

相关推荐

    MD5加密算法的JAVA实现

    MD5加密算法是一种广泛使用的哈希函数,用于生成...总结来说,MD5加密算法在Java中的实现相对简单,通过`java.security.MessageDigest`类即可轻松完成。然而,在实际应用中,应根据具体的安全需求选择合适的散列算法。

    java对几种加密算法的实现

    在Java编程语言中,有多种加密算法可用于数据的安全传输和存储。这些算法是信息安全的核心,保护数据免受未经授权的访问。以下是对几种常见加密算法在Java中的实现的详细阐述: 1. **对称加密**: - **DES(Data ...

    常用加密算法的Java实现总结(二)——对称加密算法DES、3DES和AES.pdf

    对称加密算法包括了多种算法,本文主要介绍DES、3DES和AES这三种常见的对称加密算法,并对它们进行Java实现的总结。 首先,对称加密算法的一个关键优势在于其算法公开、计算量小、加密速度快、加密效率高,但它们也...

    JAVA 加密算法(很好的算法,经典摘要)

    Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...

    Java加密算法(源代码)

    在Java中,我们可以使用多种加密技术来实现数据的加密和解密,包括对称加密、非对称加密以及数字签名等。下面将详细介绍这些概念及其在Java中的应用。 1. **对称加密算法**: 对称加密是最常见的加密方式,它使用...

    常用MD5加密算法和3-DES加密算法java实现

    ### 常用MD5加密算法和3-DES加密算法Java实现 在现代软件开发过程中,数据的安全性变得越来越重要。对于数据传输和存储过程中的安全性保障,加密技术发挥着至关重要的作用。本文将详细介绍如何在Java环境中实现两种...

    java加密算法源码

    7. 加密库:Java提供了JCE(Java Cryptography Extension)作为标准的加密库,包含了多种加密算法。源码可能使用了JCE库中的API,展示了如何在Java程序中集成加密功能。 通过研究这些源码,开发者不仅可以学习到...

    RSA加密算法的JAVA实现

    `bcprov-ext-jdk15on-164.jar`和`bcprov-jdk15on-164.jar`是Bouncy Castle库的文件,这是一个开源的Java安全包,提供了包括RSA在内的多种加密算法支持。在Java项目中,如果系统默认的JCE(Java Cryptography ...

    java 加密算法及原理.jar

    在Java中,我们可以使用多种加密算法来实现数据的安全传输和存储。以下将详细介绍几种常见的Java加密算法及其工作原理。 1. **对称加密算法** 对称加密算法使用相同的密钥进行加密和解密,速度快,效率高,适合...

    java 加密算法的代码实现

    在Java中,可以使用Java Cryptography Extension (JCE)框架来实现这些加密算法。例如,使用`java.security.MessageDigest`类处理MD5和SHA的摘要计算,`javax.crypto.Cipher`类实现DES、3DES和AES的加密解密,`java....

    3DS加密算法,JAVA,C#端

    Java端则可能使用了Java Cryptography Extension (JCE)来实现解密,JCE提供了丰富的加密和解密功能,支持多种加密算法。 总结来说,这个项目涉及到的关键知识点包括: - 3DS加密算法及其在电子支付安全中的应用 - ...

    java实现加密算法

    Java作为一种广泛应用的编程语言,提供了丰富的库和API来实现各种加密算法。本项目旨在通过纯Java代码实现16进制的加密算法,以增强对数据保护的理解和实践能力。 1. **加密算法基础** 加密算法是一种将明文数据...

    基于属性的加密方法实现,cpabe属性加密JAVA源码实现

    3. **加密算法(Encryption Algorithm)**:加密者使用公钥和一个策略(即一组属性条件)来加密明文。策略定义了哪些属性组合可以解密该密文。 4. **解密算法(Decryption Algorithm)**:持有合适私钥的用户可以...

    基于AES加密算法的Java Web硬件绑定保护技术.pdf

    "基于AES加密算法的Java Web硬件绑定保护...本文介绍了一种基于AES加密算法的Java Web硬件绑定保护技术,该技术通过将固定设备硬件标识和移动设备硬件标识相结合,实现硬件绑定保护,防止Java Web系统的非授权使用。

    用Java加密类实现DES、RSA及SHA的加密算法

    在实际开发中,为了提高安全性,通常会结合使用多种加密算法,例如使用RSA进行密钥交换,然后使用DES对大量数据进行加密。同时,还需要注意密钥的安全存储和管理,避免因密钥泄露导致的安全风险。 以上代码只是基础...

    XXTEA加密算法各种语言实现整理

    在提供的文件列表中,我们看到了多种编程语言实现的XXTEA加密算法版本,包括Java、JavaScript、PHP、C#、ActionScript、C和Delphi。这些实现旨在让开发者在不同平台上轻松地使用XXTEA进行数据加密和解密。 1. **...

    Java AES DES加密算法的坑

    在IT行业中,加密算法是数据安全的重要组成部分,Java平台提供了多种加密算法,如AES和DES。本文将深入探讨这两种加密算法在实际应用中可能遇到的问题和陷阱。 首先,AES(Advanced Encryption Standard)是一种块...

    java加密算法及常用知识学习杂记

    在Java中,有多种加密算法可供选择,如AES、DES和RSA,每种都有其特定的应用场景和优势。下面将详细介绍这些算法以及相关的学习要点。 1. **AES(Advanced Encryption Standard)**:高级加密标准,是一种对称加密...

    基于Java的加密算法演示项目.zip

    通过不同的示例代码,项目涵盖了Base64、DES、IDEA、MD5、RSA和SHA1等多种加密算法的实现。每个示例都详细展示了如何使用Java语言和相关库来实现这些加密和解密操作。 主要内容 Base64Demo: 演示了如何使用...

Global site tag (gtag.js) - Google Analytics