当前位置:首页 » 密码管理 » 矩阵加密论文

矩阵加密论文

发布时间: 2022-12-06 16:42:09

A. 怎样用矩阵加密和解密一段英文

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

//矩阵数据结构
//二维矩阵
class _Matrix
{
public int m;
public int n;
public float[] arr;

//初始化
public _Matrix()
{
m = 0;
n = 0;
}

public _Matrix(int mm,int nn)
{
m = mm;
n = nn;
}

//设置m
public void set_mn(int mm,int nn)

B. 矩阵在密码学的运用问题

对密码不熟,代数还可以,我的理解是这样的,首先要将“ALGEBRA”转换为向量c=(1 12 7 5 2 18 1 9 3)。
设A为一个可逆矩阵,与传递的信息大小要相同,这里就是9×9,
则可以c*A或者A*transpose(c)(transpose表示c的转置向量,*为乘法),得到一个行或者列向量。
把得出的行或者列向量作为加密后的信息发出,解密者若知道这一个矩阵A,
如果用的是行向量,则需右乘A的逆矩阵即可得到原来的向量c,再对应到字母A……Z,就为传递的信息;列向量的话就需要左乘矩阵A的逆矩阵。

C. 密码学论文写作论文

密码学论文写作范例论文

随着网络空间竞争与对抗的日益尖锐复杂,安全问题以前所未有的深度与广度向传统领域延伸。随着移动互联网、下一代互联网、物联网、云计算、命名数据网、大数据等为代表的新型网络形态及网络服务的兴起,安全需求方式已经由通信双方都是单用户向至少有一方是多用户的方式转变。如果你想深入了解这方面的知识,可以看看以下密码学论文。

题目:数学在密码学中的应用浅析

摘要:密码学作为一门交叉学科,涉及学科广泛,其中应用数学占很大比例,其地位在密码学中也越来越重要,本文简单介绍密码学中涉及数学理论和方法计算的各种算法基本理论及应用,并将密码学的发展史分为现代密码学和传统密码学,列举二者具有代表性的明文加密方法,并分别对其中一种方法进行加密思想的概括和阐述。

关键词:密码学 应用数学 应用

随着信息时代的高速发展,信息的安全越来越重要,小到个人信息,大到国家安全。信息安全主要是将计算机系统和信息交流网络中的各种信息进行数学化的计算和处理,保护信息安全,而密码学在其中正是处于完成这些功能的技术核心。在初期的学习当中,高等数学、线性代数、概率论等都是必须要学习的基础学科,但是涉及密码学的实际操作,数论和近世代数的'数学知识仍然会有不同程度的涉及和应用,本文在这一基础上,讨论密码学中一些基本理论的应用。

一、密码学的含义及特点

密码学是由于保密通信所需从而发展起来的一门科学,其保密通讯的接受过程如下: 初始发送者将原始信息 ( 明文) 进行一定方式转换 ( 加密) 然后发送,接受者收到加密信息,进行还原解读 ( 脱密) ,完成保密传输信息的所有过程,但是由于传输过程是经由有线电或无线电进行信息传输,易被窃取者在信息传输过程中窃取加密信息,在算法未知的情况下恢复信息原文,称为破译。

保密信息破译的好坏程度取决于破译者的技术及经验和加密算法的好坏。实际运用的保密通信由两个重要方面构成: 第一是已知明文,对原始信息进行加密处理,达到安全传输性的效果; 第二是对截获的加密信息进行信息破译,获取有用信息。二者分别称为密码编码学和密码分析学,二者互逆,互相反映,特性又有所差别。

密码体制在密码发展史上是指加密算法和实现传输的设备,主要有五种典型密码体制,分别为: 文学替换密码体制、机械密码体制、序列密码体制、分组密码体制、公开密钥密码体制,其中密码学研究目前较为活跃的是上世纪70年代中期出现的公开密钥密码体制。

二、传统密码应用密码体制

在1949年香农的《保密系统的通信理论》发表之前,密码传输主要通过简单置换和代换字符实现,这样简单的加密形式一般属于传统密码的范畴。

置换密码通过改变明文排列顺序达到加密效果,而代换密码则涉及模运算、模逆元、欧拉函数在仿射密码当中的基本理论运用。

传统密码应用以仿射密码和Hill密码为代表,本文由于篇幅所限,就以运用线性代数思想对明文进行加密处理的Hill密码为例,简述其加密思想。

Hill密码,即希尔密码,在1929年由数学家Lester Hill在杂志《American Mathematical Monthly》

上发表文章首次提出,其基本的应用思想是运用线性代换将连续出现的n个明文字母替换为同等数目的密文字母,替换密钥是变换矩阵,只需要对加密信息做一次同样的逆变换即可。

三、现代密码应用

香农在1949年发表的《保密系统的通信理论》上将密码学的发展分为传统密码学与现代密码学,这篇论文也标志着现代密码学的兴起。

香农在这篇论文中首次将信息论引入密码学的研究当中,其中,概率统计和熵的概念对于信息源、密钥源、传输的密文和密码系统的安全性作出数学描述和定量分析,进而提出相关的密码体制的应用模型。

他的论述成果为现代密码学的发展及进行信息破译的密码分析学奠定理论基础,现代的对称密码学以及公钥密码体制思想对于香农的这一理论和数论均有不同程度的涉及。

现代密码应用的代表是以字节处理为主的AES算法、以欧拉函数为应用基础的RSA公钥算法以及运用非确定性方案选择随机数进行数字签名并验证其有效性的El Gamal签名体制,本文以AES算法为例,简述现代密码应用的基本思想。

AES算法的处理单位是计算机单位字节,用128位输入明文,然后输入密钥K将明文分为16字节,整体操作进行十轮之后,第一轮到第九轮的轮函数一样,包括字节代换、行位移、列混合和轮密钥加四个操作,最后一轮迭代不执行列混合。

而且值得一提的是在字节代换中所运用到的S盒置换是运用近世代数的相关知识完成加密计算的。

四、结语

本文通过明确密码学在不同发展阶段的加密及运作情况,然后主要介绍密码学中数学方法及理论,包括数论、概率论的应用理论。

随着现代密码学的活跃发展,数学基础作为信息加密工具与密码学联系越来越密切,密码学实际操作的各个步骤都与数学理论联系甚密,数学密码已经成为现代密码学的主流学科。

当然,本文论述的数学理论与密码学的应用还只是二者关系皮毛,也希望看到有关专家对这一问题作出更深层次的论述,以促进应用数学理论与密码学发展之间更深层次的沟通与发展。

;

D. 矩阵在现实生活中的应用

矩阵(数学术语)

  • 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合、 ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。

定义

  • 由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

这里表示的是一次线性变换再街上一个平移。

  • 线性变换及对称

    线性变换及其所对应的对称,在现代物理学中有着重要的角色。例如,在量子场论中,基本粒子是由狭义相对论的洛伦兹群所表示,具体来说,即它们在旋量群下的表现。内含泡利矩阵及更通用的狄拉克矩阵的具体表示,在费米子的物理描述中,是一项不可或缺的构成部分,而费米子的表现可以用旋量来表述。描述最轻的三种夸克时,需要用到一种内含特殊酉群SU(3)的群论表示;物理学家在计算时会用一种更简便的矩阵表示,叫盖尔曼矩阵,这种矩阵也被用作SU(3)规范群,而强核力的现代描述──量子色动力学的基础正是SU(3)。还有卡比博-小林-益川矩阵(CKM矩阵):在弱相互作用中重要的基本夸克态,与指定粒子间不同质量的夸克态不一样,但两者却是成线性关系,而CKM矩阵所表达的就是这一点。

  • 量子态的线性组合

    1925年海森堡提出第一个量子力学模型时,使用了无限维矩阵来表示理论中作用在量子态上的算子。这种做法在矩阵力学中也能见到。例如密度矩阵就是用来刻画量子系统中“纯”量子态的线性组合表示的“混合”量子态。

    另一种矩阵是用来描述构成实验粒子物理基石的散射实验的重要工具。当粒子在加速器中发生碰撞,原本没有相互作用的粒子在高速运动中进入其它粒子的作用区,动量改变,形成一系列新的粒子。这种碰撞可以解释为结果粒子状态和入射粒子状态线性组合的标量积。其中的线性组合可以表达为一个矩阵,称为S矩阵,其中记录了所有可能的粒子间相互作用。

  • 简正模式

    矩阵在物理学中的另一类泛应用是描述线性耦合调和系统。这类系统的运动方程可以用矩阵的形式来表示,即用一个质量矩阵乘以一个广义速度来给出运动项,用力矩阵乘以位移向量来刻画相互作用。求系统的解的最优方法是将矩阵的特征向量求出(通过对角化等方式),称为系统的简正模式。这种求解方式在研究分子内部动力学模式时十分重要:系统内部由化学键结合的原子的振动可以表示成简正振动模式的叠加[31] 。描述力学振动或电路振荡时,也需要使用简正模式求解。

  • 几何光学

    在几何光学里,可以找到很多需要用到矩阵的地方。几何光学是一种忽略了光波波动性的近似理论,这理论的模型将光线视为几何射线。采用近轴近似(英语:paraxial approximation),假若光线与光轴之间的夹角很小,则透镜或反射元件对于光线的作用,可以表达为2×2矩阵与向量的乘积。这向量的两个分量是光线的几何性质(光线的斜率、光线跟光轴之间在主平面(英语:principal plane)的垂直距离)。这矩阵称为光线传输矩阵(英语:ray transfer matrix),内中元素编码了光学元件的性质。对于折射,这矩阵又细分为两种:“折射矩阵”与“平移矩阵”。折射矩阵描述光线遇到透镜的折射行为。平移矩阵描述光线从一个主平面传播到另一个主平面的平移行为。

    由一系列透镜或反射元件组成的光学系统,可以很简单地以对应的矩阵组合来描述其光线传播路径。

  • 电子学

    在电子学里,传统的网目分析(英语:mesh analysis)或节点分析会获得一个线性方程组,这可以以矩阵来表示与计算。

  • E. 置换密钥矩阵加密算法实现与安全性分析

    #include<iostream.h>
    class SubKey{ //定义子密钥为一个类
    public:
    int key[8][6];
    }subkey[16]; //定义子密钥对象数组

    class DES{
    int encipher_decipher; //判断加密还是解密
    int key_in[8][8]; //用户原始输入的64位二进制数
    int key_out[8][7]; //除去每行的最后一位校验位
    int c0_d0[8][7]; //存储经PC-1转换后的56位数据
    int c0[4][7],d0[4][7]; //分别存储c0,d0
    int text[8][8]; //64位明文
    int text_ip[8][8]; //经IP转换过后的明文
    int A[4][8],B[4][8]; //A,B分别存储经IP转换过后明文的两部分,便于交换
    int temp[8][6]; //存储经扩展置换后的48位二进制值
    int temp1[8][6]; //存储和子密钥异或后的结果
    int s_result[8][4]; //存储经S变换后的32位值
    int text_p[8][4]; //经P置换后的32位结果
    int secret_ip[8][8]; //经逆IP转换后的密文
    public:
    void Key_Putting();
    void PC_1();
    int function(int,int); //异或
    void SubKey_Proction();
    void IP_Convert();
    void f();
    void _IP_Convert();
    void Out_secret();
    };
    void DES::Key_Putting() //得到密钥中对算法有用的56位
    {
    cout<<"请输入64位的密钥(8行8列且每行都得有奇数个1):\n";
    for(int i=0;i<8;i++)
    for(int j=0;j<8;j++){
    cin>>key_in[i][j];
    if(j!=7) key_out[i][j]=key_in[i][j];
    }
    }
    void DES::PC_1() //PC-1置换函数
    {
    int pc_1[8][7]={ //PC-1
    ,
    ,
    ,
    ,
    ,
    ,
    ,

    };
    int i,j;
    for(i=0;i<8;i++)
    for(j=0;j<7;j++)
    c0_d0[i][j]=key_out[ (pc_1[i][j]-1)/8 ][ (pc_1[i][j]-1)%8 ];
    }
    int DES::function(int a,int b) //模拟二进制数的异或运算,a和b为整型的0和1,返回值为整型的0或1
    {
    if(a!=b)return 1;
    else return 0;
    }
    void DES::SubKey_Proction() //生成子密钥
    {
    int move[16][2]={ //循环左移的位数
    1 , 1 , 2 , 1 ,
    3 , 2 , 4 , 2 ,
    5 , 2 , 6 , 2 ,
    7 , 2 , 8 , 2 ,
    9 , 1, 10 , 2,
    11 , 2, 12 , 2,
    13 , 2, 14 , 2,
    15 , 2, 16 , 1
    };
    int pc_2[8][6]={ //PC-2
    14, 17 ,11 ,24 , 1 , 5,
    3 ,28 ,15 , 6 ,21 ,10,
    23, 19, 12, 4, 26, 8,
    16, 7, 27, 20 ,13 , 2,
    41, 52, 31, 37, 47, 55,
    30, 40, 51, 45, 33, 48,
    44, 49, 39, 56, 34, 53,
    46, 42, 50, 36, 29, 32
    };
    for(int i=0;i<16;i++) //生成子密钥
    {
    int j,k;
    int a[2],b[2];
    int bb[28],cc[28];
    for(j=0;j<4;j++)
    for(k=0;k<7;k++)
    c0[j][k]=c0_d0[j][k];
    for(j=4;j<8;j++)
    for(k=0;k<7;k++)
    d0[j-4][k]=c0_d0[j][k];
    for(j=0;j<4;j++)
    for(k=0;k<7;k++){
    bb[7*j+k]=c0[j][k];
    cc[7*j+k]=d0[j][k];
    }
    for(j=0;j<move[i][1];j++){
    a[j]=bb[j];
    b[j]=cc[j];
    }
    for(j=0;j<28-move[i][1];j++){
    bb[j]=bb[j+1];
    cc[j]=cc[j+1];
    }
    for(j=0;j<move[i][1];j++){
    bb[27-j]=a[j];
    cc[27-j]=b[j];
    }
    for(j=0;j<28;j++){
    c0[j/7][j%7]=bb[j];
    d0[j/7][j%7]=cc[j];
    }
    for(j=0;j<4;j++) //L123--L128是把c0,d0合并成c0_d0
    for(k=0;k<7;k++)
    c0_d0[j][k]=c0[j][k];
    for(j=4;j<8;j++)
    for(k=0;k<7;k++)
    c0_d0[j][k]=d0[j-4][k];
    for(j=0;j<8;j++) //对Ci,Di进行PC-2置换
    for(k=0;k<6;k++)
    subkey[i].key[j][k]=c0_d0[ (pc_2[j][k]-1)/7 ][ (pc_2[j][k]-1)%7 ];
    }
    }
    void DES::IP_Convert()
    {
    int IP[8][8]={ //初始置换IP矩阵
    58, 50, 42, 34, 26, 18, 10, 2,
    60, 52, 44, 36, 28, 20, 12, 4,
    62, 54, 46, 38, 30, 22, 14, 6,
    64, 56, 48, 40, 32, 24, 16, 8,
    57, 49, 41, 33, 25, 17, 9, 1,
    59, 51, 43, 35, 27, 19, 11, 3,
    61, 53, 45, 37, 29, 21, 13, 5,
    63, 55, 47, 39, 31, 23, 15, 7
    };
    cout<<"你好,你要加密还是解密?加密请按1号键(输入1),解密请按2号键,并确定."<<'\n';
    cin>>encipher_decipher;
    char * s;
    if(encipher_decipher==1) s="明文";
    else s="密文";
    cout<<"请输入64位"<<s<<"(二进制):\n";
    int i,j;
    for(i=0;i<8;i++)
    for(j=0;j<8;j++)
    cin>>text[i][j];
    for(i=0;i<8;i++) //进行IP变换
    for(j=0;j<8;j++)
    text_ip[i][j]=text[ (IP[i][j]-1)/8 ][ (IP[i][j]-1)%8 ];
    }

    F. 矩阵加密和解密

    去看看矩阵的乘法运算,就清楚了。很简单的乘法运算

    G. 求个矩阵加密算法的程序

    晕,我原号登陆竟然没有回答框~~!!

    是不是楼主对我 (1西方不胜1) 做了限制? 那我也只能回答一部分...

    把 生成满秩矩阵以及其逆矩阵 的代码贴上来....

    #include "stdio.h"
    #include "time.h"
    #include "stdlib.h"
    #define MAX 8 // 矩阵大小
    #define PT 10 // 附矩阵 随机初始值的最大值
    #define bianhuan 100 // 由对角线矩阵生成满秩矩阵所需的行变化次数

    struct changs // 记录变化的过程, 以便逆过来求其逆矩阵
    {
    int temp1 ;
    int temp2 ;
    } change[bianhuan + 1 ] ;

    int Matrix[MAX][MAX] ; // 满秩矩阵
    int R_matrix[MAX][MAX]; // 逆矩阵

    // ***** 生成 满秩矩阵 并求出该满秩矩阵的逆矩阵 ****************************//
    void creat()
    {
    int i , k ;
    int flage = 0 ;

    for(i = 0 ; i < MAX ; i ++ ) // 生成主对角线矩阵
    Matrix[i][i] = R_matrix[i][i] = 1 ;

    for(k = 0 ; k < bianhuan ; k ++ ) // 进行 行 随意变化生成满秩矩阵 , 并记录下变化过程
    {
    int x1 = change[k].temp1 = rand() % MAX ;

    int x2 = rand() % MAX ;
    while( x2 == x1 ) x2 = rand() % MAX ;

    change[k].temp2 = x2 ;
    for(i = 0 ; i < MAX ; i ++ )
    if( Matrix[x1][i] + Matrix[x2][i] >= 31 ) break ; // 控制矩阵中最大的数的范围在30内

    if(i >= MAX )
    {
    for(i = 0 ; i < MAX ; i ++ )
    Matrix[x1][i] += Matrix[x2][i] ;
    }
    else k-- ,flage ++ ;

    if(flage > 2000 ) { k++ ; break ; }
    }
    for(k-- ; k >= 0 ; k -- ) // 行逆变换, 求出其逆矩阵
    {
    for( i = 0 ; i < MAX ; i ++ )
    R_matrix[ change[k].temp1 ][i] -= R_matrix[ change[k].temp2 ][i] ;

    }
    return ;
    }

    int main()
    {
    int i , j ;
    srand(time(0)) ;

    creat() ;

    printf("加密矩阵为:\n") ;
    for(i =0 ; i < MAX ; i ++ )
    {
    for(j =0 ; j < MAX ; j ++)
    printf("%4d " , Matrix[i][j]) ;
    printf("\n") ;
    }

    printf("\n") ;
    printf("解密矩阵为:\n") ;
    for( i = 0; i < MAX ; i ++ )
    {
    for(j =0 ; j < MAX ; j ++ )
    printf("%4d ",R_matrix[i][j]) ;
    printf("\n");
    }
    return 0 ;
    }

    如下:是一个测试数据.

    加密矩阵为:
    14 8 29 30 10 2 14 13
    11 8 23 25 6 1 10 8
    12 8 26 27 7 3 11 9
    7 5 15 15 3 1 5 4
    9 6 19 21 7 1 10 9
    10 6 21 22 7 2 10 9
    8 6 17 18 3 1 6 4
    7 6 15 19 5 1 9 7

    解密矩阵为:
    -2 5 -1 -2 -3 5 -2 -1
    -1 5 2 -1 -1 -1 -4 -1
    2 -1 2 0 1 -5 0 0
    -1 -4 -3 2 1 4 3 1
    -3 2 0 -2 2 3 0 -2
    -1 1 0 0 -1 2 -1 0
    2 4 4 -4 -1 -6 -2 -1
    1 -3 -2 4 -1 1 0 2

    被加密文件:
    =====================================
    发往: 刘晓辉 (ACM基地/QT002)
    时间: 2007-06-11 星期一 18:58:40 (RSA)(封装)
    (文件) player.swf
    -------------------------------------

    加密后文件:
    x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE hh]hv
    Q QJQ[ Y YSYd 11.16 G䴗?GQ K KDKU 8858> ;;5;D B9#PIaBP2,@:K2=90F@S9E'#-%-'72B-60):5F0:"-)4"*&!/+7&-%$8-3>H3*!*25*/$.6=. %"+0"( %-4%#$%'?5>nJ6Q1'2V8,C8,6`>1I?4"**$+K2&7.&-P5(;# #<&1" %@(#/+(
    J1X!"9%B%& A(I#'? 2"< 6#?(, *14)@x+2\ . 8g  7%-R &/W�???"
    (ER2L]>'<JE+AS% #. 8"5?;$7D*?)5�.
    .5 ^A`E3QK 3K2*CR 7T9.I.-*@ .B0"7D?F2%;5"4 16)9)/*,3hk
    $)QT #'-Y^ 13 #GI ? %KN 8; ;> K(;3T&':0#?@!5'H"#&
    3(#96+$=( #+*"/?/
    ` "I  ' Q?,? A ?" E  2 5?%%.:xS #.\=  &2gE 7#  (R9 ?!*W<? ?(#E0V]K%IvS BJ9;[A IS>AdH '. %6( ;?51Q8 >D65U< -5%+>. 25.)D. x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E P(Px P ==\ = E"Eg E %%7 % 66R 6 ::W : **? * --E -

    解密后文件:

    =====================================
    发往: 刘晓辉 (ACM基地/QT002)
    时间: 2007-06-11 星期一 18:58:40 (RSA)(封装)
    (文件) player.swf
    -------------------------------------

    热点内容
    随机启动脚本 发布:2025-07-05 16:10:30 浏览:524
    微博数据库设计 发布:2025-07-05 15:30:55 浏览:24
    linux485 发布:2025-07-05 14:38:28 浏览:304
    php用的软件 发布:2025-07-05 14:06:22 浏览:753
    没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:430
    javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:695
    康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:239
    java的开发流程 发布:2025-07-05 12:45:11 浏览:684
    怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:282
    访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:833