精华内容
下载资源
问答
  • 主要为大家详细介绍了java实现置换密码加密解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 用c++语言实现的古典密码算法列置换的演示程序。
  • Python单表置换密码解密程序

    千次阅读 2019-10-10 21:22:24
    Python置换密码解密程序 1.本置换密码程序的具体解释如下 2.具体的注释在代码中,有问题可以在评论中提问,我会及时说明 (因为第一次写Python的代码有些地方错误的话,及时指出,我很乐意听取大家的建议) # 大写...

    Python单表置换密码解密程序

    1.本置换密码程序的具体解释如下

    在这里插入图片描述

    2.具体的注释在代码中,有问题可以在评论中提问,我会及时说明

    (由于第一次写Python代码,所以有任何相关意见都可以在评论区留言,我会及时改正)

    输入密钥:HACKERINVASION

    输入密文:cGDJTQEM HJJBVCHQVGF DHSGM

    得到的明文为:Computer application major

    在这里插入图片描述

    # 大写字母表
    AlphaBet = ["A", "B", "C", "D", "E", "F", "G", "H", "I",
                "J", "K", "L", "M", "N", "O", "P", "Q", "R",
                "S", "T", "U", "V",  "W", "X", "Y", "Z"]
    # 小写字母表
    alphaBet = ["a", "b", "c", "d", "e", "f", "g", "h", "i",
                "j", "k", "l", "m", "n", "o", "p", "q", "r",
                "s", "t", "u", "v",  "w", "x", "y", "z"]
    # 作为密码本使用的字母表
    AlphaBet1 = ["a", "b", "c", "d", "e", "f", "g", "h", "i",
                 "j", "k", "l", "m", "n", "o", "p", "q", "r",
                 "s", "t", "u", "v",  "w", "x", "y", "z"]
    
    # 输入密钥和密文
    key = list(input("输入密钥:"))
    miwen = input("输入密文:")
    
    # 这是作为处理后的密钥使用
    keyf = []
    mingwen = ""
    
    # 将key中重复的字母删除
    def chuli_key():
        x = 0
        for i in key:
            z = 0
            x = 0
            for a in key:
                if i == a:
                    x = x + 1
                    if x == 2:
                        key.pop(z)
                        x = 0
                z += 1
        print(key)
    
    #将key加入到密码表中
    def add_key():
        i = 0
        while i < len(key):
            AlphaBet1[i] = key[i]
            i += 1
        k = len(key)
        j = 0
    
    # 将余下的位置用与KEY不重复的字母顺序填充
        for i in AlphaBet:
            if key.count(i) == 0:
                AlphaBet1[k] = i
                k += 1
    
    
    # 将key中重复的字母删除
    chuli_key()
    # 将key加入到密码表中
    add_key()
    # 判断字母大小写
    for i in miwen:
        if i.isspace() == True:
            mingwen = mingwen + ' '
            continue
        else:
            if ord(i) <= ord("Z"):
                mingwen = mingwen + alphaBet[AlphaBet1.index(i)]
            elif ord(i) >= ord("a"):
                mingwen = mingwen + AlphaBet1[alphaBet.index(i)]
    
    print(key)
    print(alphaBet)
    print(AlphaBet)
    print(AlphaBet1)
    print(mingwen)
    
    input("按任意键退出")
    
    
    展开全文
  • 置换密码的加密解密

    千次阅读 2018-12-19 21:27:34
    Java实现置换密码代码 代码 分组长度为7 加密顺序为{5, 3, 2, 0, 6, 4, 1} package com.jingfei.Encryptoin; import java.util.Scanner; public class ZhiHuan { public static void main(String[] args) { ...

    Java实现置换密码

    代码

    分组长度为7
    加密顺序为{5, 3, 2, 0, 6, 4, 1}

    package com.jingfei.Encryptoin;
    
    import java.util.Scanner;
    
    public class ZhiHuan {
        public static void main(String[] args) {
    
            final char[] CHARS = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0'
                    , '1', '2', '3', '4', '5', '6', '7', '8', '9'};
            int leng = 0;
            final int N = 7;//分组长度
            char[] transChars = new char[N];
            final int[] encryptionWay = {5, 3, 2, 0, 6, 4, 1};//规定置换顺序
            final int[] decryptionWay = {3, 6, 2, 1, 5, 0, 4};
    
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入你要加密的字符:");
            String m = scanner.nextLine();
    
            StringBuffer m1 = new StringBuffer(m);//14
            int add = 0;//补位添加的0的个数
            System.out.println("加密前:\n" + m1);
            if (m1.length() % N != 0) {
                leng = m1.length() / N + 1;
                //System.out.println(leng);
                add = N - m1.length() % N;
                for (int i = 0; i < add; i++) {
                    m1.append(0);
                    //补足7的整数倍
                }
            } else {
                leng = m1.length() / N;
            }
            System.out.println("补充后:\n" + m1);
    
            //将输入的字符串,分组存到二维数组中
            char[][] arr = new char[leng][N];//{{},{}}
            for (int i = 0; i < leng; i++) {
                for (int j = i * N, z = 0; j < N * (i + 1) && z < N; j++, z++) {
                    arr[i][z] = m1.charAt(j);
    
                }
            }
    
            //加解密就置换数组内容不一样,其他都一样就抽方法了
            //加密
    
            System.out.println("加密后:");
            encryptionAndDecryption(leng, N, transChars, encryptionWay, arr);
            print(leng, arr);
    
            //解密
            System.out.println("解密后:");
            encryptionAndDecryption(leng, N, transChars, decryptionWay, arr);
            char[] charsRemove = new char[N-add];
            for (int i = 0; i < N-add; i++) {
                charsRemove[i]=arr[arr.length-1][i];//去除末尾添加的0
            }
            arr[arr.length-1]=charsRemove;
            print(leng, arr);
        }
    
        static void print(int leng, char[][] arr) {
            for (int i = 0; i < leng; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    System.out.print(arr[i][j]);//遍历全部置换后的加密结果
                }
            }
            System.out.println();
        }
    
        static void encryptionAndDecryption(int leng, int n, char[] transChars, int[] encryptionWay, char[][] arr) {
            for (int i = 0; i < leng; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    transChars[j] = arr[i][encryptionWay[j]];//遍历每个二维数组进行置换
    
                }
                for (int k = 0; k < n; k++) {
                    arr[i][k] = transChars[k];//将每一维的置换结果又存回去
                }
            }
    
    
        }
    }
    

    结果

    输入你要加密的字符:
    helloWORLD
    加密前:
    helloWORLD
    补充后:
    helloWORLD0000
    加密后:
    WllhOoe00DR00L
    解密后:
    helloWORLD
    
    Process finished with exit code 0
    
    

    -------------------------------------------------------------
    谢谢!

    展开全文
  • JAVA实现古典置换密码的加密解密
  • 《替代密码和置换密码的C语言实现》由会员分享,可在线阅读,更多相关《替代密码和置换密码的C语言实现(13页珍藏版)》请在人人文库网上搜索。1、实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过...

    《替代密码和置换密码的C语言实现》由会员分享,可在线阅读,更多相关《替代密码和置换密码的C语言实现(13页珍藏版)》请在人人文库网上搜索。

    1、实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容:A:替代密码1、实验原理:使用替代法进行加密,将明文中的字符用其他字符替代后形成密文。最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。它的加密过程可表示为: E(m) = (m+k ) mod n其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。解密算法是:m = D(L) =(L-k)mod 26;2、算法设计:使。

    2、用两个函数分别进行加密和解密的过程,在主程序中通过选择加密还是解密来调用不同函数进行替代密码的加密和解密过程实现;3、函数接口:加密:int encrypt()printf(输入明文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)mi=(bi+k)%26+64;printf(%s,&m);return 0;解密:int decode()printf(输入密文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;prin。

    3、tf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)ni=(bi-k)%26+64;printf(%s,n);return 0;4、 程序流程图:5、 测试结果截图:加密:解密:B:1、 实验原理:不改变明文字符,但是把字符在明文中的排列顺序改变,来实现明文信息的加密。置换密码也被称为换位密码。本次实验使用的是矩阵换位法,是将明文中的字母按照给定的顺序安排在一个矩阵中,然后又根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵恢复正常顺序,。

    4、从而恢复明文。2、算法设计:通过选择加密或解密,使用置换矩阵顺序和恢复矩阵顺序的两个函数,分别在主函数中进行调用来实现置换密码的加密解密实现;3、函数接口:加密:int jiami()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf(输入明文:n);scanf(%s, ptext);i = 0;while (ptexti != 0)t。

    5、ext_len+;i+;printf(输入密钥:n);scanf(%s, key);i = 0;while (keyi != 0)key_len+;i+;for (i = 0; i#include #includeint k,i=0;char a100;char b100,m100,n100;int encrypt()printf(输入明文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)mi=(bi+k)%26+64;printf(%s,&m);r。

    6、eturn 0;int decode()printf(输入密文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)ni=(bi-k)%26+64;printf(%s,n);return 0;int main()int c;printf(加密选择1,解密选择2 n);scanf(%d,&c);if(c=1)encrypt();if(c=2)decode();return 0;B、置换密码:#include #include #define LENGTH 。

    7、26int jiami()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf(输入明文:n);scanf(%s, ptext);i = 0;while (ptexti != 0)text_len+;i+;printf(输入密钥:n);scanf(%s, key);i = 0;while (keyi != 0)key_len+;i+;fo。

    8、r (i = 0; ikey_len; i+)numberi = 0;for (j = 0; jkey_len; j+)if (keyjkeyi)numberi+;for (i = 0; ikey_len; i+)for (j = i + 1; jkey_len; j+)if (keyj = keyi)numberj+;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)ctexti*row。

    9、 + j = ptextnumberi + key_len*j;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)printf(%c, ctexti*row + j);return 0;int jiemi()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0; char key1LENGTH = 0 ;char ptext1LENGTH * 10 = 0 ;char ctext1LENGTH * 10 = 0 ;char number1LENGTH = 0 ;printf(输入密文:n);scanf。

    10、(%s, ctext1);while (ctext1i != 0)text_len+;i+;printf(输入密钥);scanf(%s, key1);i = 0;while (key1i != 0)key_len+;i+;for (i = 0; ikey_len; i+)int j = 0;number1i = 0;for (j = 0; jkey_len; j+)if (key1jkey1i)number1i+;for (i = 0; ikey_len; i+)int j = 0;for (j = i + 1; jkey_len; j+)if (key1j = key1i)number1j+。

    11、;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)ptext1number1i + key_len*j = ctext1i*row + j;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)printf(%c, ptext1i*row + j);return 0;int main()int a;printf(加密选择1,解密选择2);scanf(%d, &a);if (a = 1)jiami();else if (a = 2)jiemi();return 0。

    展开全文
  • 实用文案 实验一 一实验名称 替代密码和置换密码的实现 二实验目的 通过编程实现替代密码算法和置换密码算法加深对古典密码体系的 了解为以后深入学习密码学奠定基础 三实验内容 A 替代密码 1 实验原理使用替代法...
  • 置换密码 置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。 矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序...

    置换密码

    置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。
    矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack begins atfive,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:
    1
    根据密钥 cipher 中各字母在字母表中出现的先后顺序,给定一个置换:
    2
    根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式:
    根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式:
    3
    从而得到密文:abatgftetcnvaiikse
    其解密的过程是根据密钥的字母数作为列数,将密文按照列,行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。

    代码:

    #include <iostream>
    #include <stdlib.h>
    #include <string>
    using namespace std;
    void encrypt() {
    	string m;
    	cout<< "请输入明文:" <<endl;
    	cin>> m;
    	for (int i = m.size(); i%7!=0; i++)
    	{
    		m.push_back('A');
    	}
    	for (int i = 0; i < m.size(); i+=7)
    	{
    		swap(m[i], m[i+2]);
    		swap(m[i], m[i+6]);
    		swap(m[i], m[i+3]);
    		swap(m[i], m[i+0]);
    		swap(m[i], m[i+5]);
    		swap(m[i], m[i+1]);
    		swap(m[i], m[i+4]);
    	}
    	cout<<"加密后密文为:"<<endl;
    	for (int i = 0; i < m.size(); i++)
    	{
    		if(i!=0 && i%7==0)
    			cout<<endl;
    		cout<<m[i];		
    	}
    	cout<<endl;
    }
    void decrypt() {
    	string m;
    	cout<<"请输入密文:"<<endl;
    	cin>>m;
    	for(int i=0;i<m.size();i+=7) {
    		swap(m[i], m[i+4]);
    		swap(m[i], m[i+1]);
    		swap(m[i], m[i+5]);
    		swap(m[i], m[i+0]);
    		swap(m[i], m[i+3]);
    		swap(m[i], m[i+6]);
    		swap(m[i], m[i+2]);
    	}
    	cout<<"明文为:"<<endl;
    	for (int i = 0; m[i]!='A'; i++)
    	{
    		cout<<m[i];
    	}
    	cout<<endl;
    }
    int main()
    {
    	int x;
    	cout<<"1.加密 2.解密"<<endl;
    	cin>>x;
    	switch(x) {
    		case 1:encrypt(); break;
    		case 2:decrypt(); break;
    		default: break;
    	}
    	return 0;
    }
    
    

    加密:
    3
    解密:
    4

    展开全文
  • 用C++实现置换密码的加密解密算法

    热门讨论 2012-04-09 20:52:37
    用C++实现置换密码的加密解密算法,此文档为实现代码
  • 用C++实现置换密码的加密解密算法,此文档为代码实现
  • c语言实现置换密码//单置换密码的编程实现(C++)//作者信息:////本程序使用方法:需要在本程序所在的文件夹创建一个"密码学.txt"文档,//该程序所需要的数据全部由该文档提供,然后运行即可得到结果,如需要修改数据...
  • 自己写的 呵呵 希望支持 信息安全 古典加密算法------置换密码 古典加密算法------代换密码------乘数密码
  • 看了简单移位密码加密和解密的那部分内容之后,想着自己写一遍脚本 加密: def shift_encrypt(m, key): l = len(key) c = "" for i in range(0, len(m), l): tmp_c = [""] * l if i+l > len(m): tmp_m = m...
  • 用c语言实现的古典密码算法列置换的演示程序。
  • 置换密码

    千次阅读 2020-04-17 03:12:11
    置换密码 参考教材:《现代密码学教程》P46 3.1.1 过程 加密过程 将明文p以设定的固定分组宽度m按行写出,即每行有m个字符;若明文长度不是m的整数倍,则不足部分用双方约定的方式填充,如双方约定用空格代替空缺处...
  • 置换密码 古典密码算法

    热门讨论 2011-11-21 23:08:48
    置换密码 置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。置换密码有时又称为换位密码。 矩阵换位法是实现置换密码的一种常用方法。它将明文中的...
  • C语言置换密码

    千次阅读 2020-09-02 18:34:22
    C语言置换密码 置换密码:将明文按照密钥的长度为一行排成矩阵,不足用其他字符补齐,再按密钥的顺序重新排列每一列,按竖排读出得到密文 例子: 明文:Beijing2008OlympicGames 密钥:421365 用$补齐矩阵 明文的...
  • 实验项目1 置换密码

    2021-05-30 15:57:21
    实验一 置换密码 一、实验目的: 通过编程实现置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。 二、实验内容: 实验原理: 不改变明文字符,但是把字符在明文中的排列顺序改变,来...
  • 周期置换密码的加密操作原理

    千次阅读 2021-03-15 17:44:23
    置换密码: 是指把明文中各字符的位置序列重新排列来得到密文的一种密码体制。 加密方法: 把明文字符以固定的宽度m(分组长度)水平地(按行)写在一张纸上(如果最后一行不足m,则需要补充固定字符),再按垂直方向...
  • JS实现置换密码解密 一、原理: (百度的) 在简单的纵行换位密码中,明文以固定的宽度水平的写在一张图表纸上,密文按垂直方向读出,解密就是密文按相同的宽度垂直的写在图表纸上,然后水平的读出明文。 效果图:...
  • 置换密码/huanweim 置换密码(Permutation Cipher)又叫换位密码(Transposi-tionCipher),它根据一定的规则重新排列明文,以便打破明文的结构特性。置换密码的特点是保持明文的所有字符不变,只是利用置换打乱了...
  • 置换密码 置换密码与前面的代换密码是不一样的,置换密码是保持明文的所有字母不变,只是利用置换打乱了明文字母的位置和次序。 首先需要明白,置换既是单射又是满射 定义 令m为一正整数,P=C=(Z26)m(Z_{26})^m(Z26...
  • Java实现置换密码加密解密

    千次阅读 2018-12-20 15:30:59
    Java实现置换密码加密解密思路代码 思路 置换密码只不过是简单的换位而已,这里写的是一个分组长度为7的置换密码因为所学知识有限,写的比较麻烦,这里先简单介绍一下思路: 1.因为置换密码首先要将其进行分组,这里...
  • 单表置换密码的C++代码实现,源码直接可以用
  • 置换密码及其python实现

    千次阅读 2020-12-28 16:33:51
    #置换密码 class PermutationCipher: def __init__(self,d:dict): self.d=d#置换-加密函数(小写字母表示明文,大写字母表示密文) v=''.join(chr(i) for i in range(97,123)) """ d=dict(zip(''.join(chr
  • python简单置换加密解密程序

    千次阅读 2020-04-15 20:14:07
    #置换密码:a<--->e b<--->f c--->g d<--->h ..... w<--->a x<--->b y<--->c z<--->d import math #声明类 class Cipher: #加密模块 def encrypt(self...
  • Python置换密码(练习)

    千次阅读 2020-05-14 19:30:24
    没@#事$$%%写$%^着^&*玩_+* 题目描述: 思路:将字符串反转,然后去点空格,按照重新定义的输出格式 截取长度 输出 将字符串反转 有两种形式: ##第一种形式 str='FAN ZHUAN ZI FU CHUAN' ...##NA.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,865
精华内容 1,946
关键字:

置换密码解密