❶ 指數是負一是什麼意思
表示這個數的倒數
一個數的-1次方就表示這個數的倒數,比如a的-1次方就表示a分之一。
❷ 1.已知,仿射密碼的計算公式為f(a)=(5a+k) mod n,其中k=7,n=26,明文a=helpme,求密文
26個字母,A是0,B是1,C是2...........Z是25
helpme:7,4,11,15,12,4
(5*7+7)mod26=16
(5*4+7)mod26=1
(5*11+7)mod26=10
........
(5*4+7)mod26=1
得16,1,10,4,15,1
對應密文:QBKEPB
❸ 下面密文是用模26下的仿射密碼加密的gzyyf,明文以he開頭,試解密消息
hellk.仿射密碼公式是:密文=明文剩於密鑰1加密鑰2然後和與26取余,即e(x)=(ax+b)mod26. 從提示he開頭,代入即g=(ha+b)mon26,z=(ea+b)mod26,可求得a=11. b=7.,從而得出其它結果。註:公式中,a表示密鑰1,且與26互質,即取值是1.3.5.7...23.25共13個,b是密鑰2,取值范圍是0-25.0-25對應英文字母a-z. 所以h=7,e=4,其它類推。還有,結果不應該是hello? 算出來是hellk.
❹ 這個a的負一次方是什麼啊如何表示
a的-1次方是1/a,表示方法如下:
a的-1次方=1/(a^1)=1/a
次方最基本的定義是:設a為某數,n為正整數,a的n次方表示為aⁿ,表示n個a連乘所得之結果,如2⁴=2×2×2×2=16。次方的定義還可以擴展到0次方和負數次方等等。
在電腦上輸入數學公式時,因為不便於輸入乘方,符號「^」也經常被用來表示次方。例如2的5次方通常被表示為2^5。
(4)仿射密碼中的a的負一是什麼意思擴展閱讀:
由5的0次方繼續除以5就可以得出5的負數次方。
例如: 5的0次方是1 (任何非零數的0次方都等於1。)
5的-1次方是0.2 1÷ 5 =0.2
5的-2次方是0.04 0.2÷5 =0.04
因為5的-1次方是0.2 ,所以5的-2次方也可以表示為0.2×0.2=0.04.
5的-3次方則是0.2×0.2×0.2=0.008
由此可見,一個非零數的-n次方=這個數的倒數的n次方。
❺ 字元組成的密碼是什麼
字元是字母和符號組成的密碼,字元是字母和符號的統稱。
字母:英文26個字母大小寫,如果區分大小寫就是52個字母,不區分就是26個,即A和a一樣
符號:類似鍵盤上(@、#、&、!、;、『、等等)都算在內。
(5)仿射密碼中的a的負一是什麼意思擴展閱讀:
密碼的分類
1、摩斯密碼
最早的摩爾斯電碼是一些表示數字的點和劃。數字對應單詞,需要查找一本代碼表才能知道每個詞對應的數。用一個電鍵可以敲擊出點、劃以及中間的停頓。
2、四方密碼:是一種對稱式加密法,由法國人Felix Delastelle(1840年–1902年)發明。 這種方法將字母兩個一組,然後採用多字母替換密碼。
3、希爾密碼:是運用基本矩陣論原理的替換密碼,由Lester S. Hill在1929年發明。
4、波雷費密碼:是一種對稱式密碼,是首種雙字母取代的加密法。
5、仿射密碼:仿射密碼是一種替換密碼。它是一個字母對一個字母的。
❻ 密碼學加密(仿射加密)
QVWB MECSRI E RWSQY!
移位密碼、仿射密碼、維吉尼亞密碼以及置換密碼的源代碼:
VC6.0調試通過
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <cctype>
#include <malloc.h>
#include <iostream>
using namespace std;
void Shift() /*移位密碼*/
{
char c[100];
int length, i=0, key=0;
system("cls");
printf("********Shift Cipher(移位密碼)********\nPlease input primal sentence(請輸入最初的明文--一組英文字母): ");
gets(c);
length=strlen(c);
printf("Input the key(0~26): ");
scanf("%d", &key);
getchar();
if(key<0)
{
printf("The value of key is error!\nPress any key to return...");
getch();
return;
}
for(i=0; i<length; i++)
{
if(c[i]>96&&c[i]<123)
c[i] = (c[i]+key-97)%26+65;
else if(c[i]>64&&c[i]<91)
c[i] = (c[i]+key-65)%26+65;
}
printf("Result is: %s\n", c);
for(i=0; i<length; i++)
{
if(c[i]>64&&c[i]<91)
c[i] = (c[i]-key-65+26)%26+97;
}
printf("\nAfter translated the sentence,we can see the primal sentence as follow:\n%s\n", c);
printf("Press any key to return(按任何鍵返回)...");
getch();
}
int gcd(int a, int b) /*輾轉相除法求a,b的最大公因數*/
{
int k = 0;
do
{
k = a%b;
a = b;
b = k;
}while(k!=0);
return a;
}
int Ni(int a, int b) /*求a相對於b的逆*/
{
int i = 0;
while(a*(++i)%b!=1);
return i;
}
void Affine() /*仿射密碼*/
{
char c[100];
int length, i=0, ka=0, kb=0, tmp;
system("cls");
printf("********Affine Cipher(仿射密碼)********\nPlease input primal sentence(請輸入最初的明文): ");
gets(c);
length = strlen(c);
printf("Input the key(2 numbers): ");
scanf("%d%d", &ka, &kb);
getchar();
if(gcd(ka,26)!=1)
{
printf("The value of the key is error!\nPress any key to return...");
return;
}
for(i=0; i<length; i++)
{
if(c[i]>96&&c[i]<123)
c[i] = (ka*(c[i]-97)+kb)%26+65;
else if(c[i]>64&&c[i]<91)
c[i] = (ka*(c[i]-65)+kb)%26+65;
}
printf("Result is: %s\n", c);
for(i=0; i<length; i++)
{
if(c[i]>64&&c[i]<91)
{
tmp = Ni(ka,26)*((c[i]-65)-kb);
if(tmp<0)
c[i] = tmp%26+26+97;
else
c[i] = tmp%26+97;
}
}
printf("\nAfter translated the sentence,we can see the primal sentence as follow:\n%s\n", c);
printf("Press any key to return(按任何鍵返回)...");
getch();
}
void Vigenere() /*維吉利亞密碼*/
{
char c[100], key[100];
int lenc, lenk, i=0, j=0, tmp;
system("cls");
printf("********Vigenere Cipher(維吉利亞密碼)********\nPlease input primal sentence(請輸入最初的明文): ");
gets(c);
lenc = strlen(c);
strcpy(c, strupr(c));
printf("Input the key: ");
gets(key);
lenk = strlen(key);
strcpy(key, strupr(key));
for(; i<lenc; i++)
{
j = j%lenk;
if(c[i]>64&&c[i]<91)
{
c[i] = (c[i]-65+key[j]-65)%26+65;
j++;
}
}
printf("Result is: %s\n", c);
for(i=0, j=0; i<lenc; i++)
{
j = j%lenk;
if(c[i]>64&&c[i]<91)
{
tmp = c[i]-65-(key[j]-65);
if(tmp>=0)
c[i] = tmp%26+97;
else
c[i] = (tmp+26)%26+97;
j++;
}
}
printf("\nAfter translated the sentence,we can see the primal sentence as follow:\n%s\n", c);
printf("Press any key to return(按任何鍵返回)...");
getch();
}
void Permutation() /*置換密碼*/
{
char c[100], *q;
int *key, len, m, i, j=0;
system("cls");
printf("********Permutation Cipher(置換密碼)********\nPlease input primal sentence(請輸入最初的明文): ");
gets(c);
strcpy(c, strupr(c));
len = strlen(c);
for(i=0; i<len; i++)
{
if(c[i]<65||c[i]>90)
{
for(j=i; j<len-1; j++)
c[j] = c[j+1];
len--;
}
}
c[len] = '\0';
printf("Input the length of the key: ");
scanf("%d", &m);
key = (int*)malloc(m*sizeof(int));
q = (char *)malloc(len*sizeof(int));
printf("Input the key: ");
for(i=0; i<m; i++)
{
scanf("%d", key+i);
key[i]--;
}
getchar();
for(i=0; i<len; i++)
{
j = (i/m)*m;
q[i] = c[*(key+i%m)+j];
}
q[i] = '\0';
printf("Result is: %s\n", q);
for(i=0, j=0; i<len; i++)
{
j = (i/m)*m;
c[*(key+i%m)+j] = q[i]+32;
}
c[len] = '\0';
printf("After translated the sentence,we can see the primal sentence as follow:\n%s\n", c);
printf("Press any key to return(按任何鍵返回)...");
free(key);
free(q);
getch();
}
int main()
{
char i = '0';
system("cls");
while(i!='5')
{
system("cls");
printf("********Press 1~5 to choose(請按1~5選擇):********\n");
printf("1. Shift Cipher(移位密碼)\n2. Affine Cipher(仿射密碼)\n3. Vigenere Cipher(維吉利亞密碼)\n4. Permutation Cipher(置換密碼)\n5. Exit(退出)\n");
i = getch();
if(i=='1')
Shift();
else if(i=='2')
Affine();
else if(i=='3')
Vigenere();
else if(i=='4')
Permutation();
else if(i=='5')
break;
}
system("pause");
return 0;
}
❼ 仿射密碼為何要求a與26互素
單碼加密法的另一種形式稱為仿射加密法(affine cipher)。在仿射加密法中,字母表的字母被賦予一個數字,例如a=0,b=1,c=2…z=25。仿射加密法的密鑰為0-25直接的數字對。
仿射加密法與單碼加密法沒什麼不同,因為明文的每個字母分別只映射到一個密文字母。仿射密碼的加密演算法就是一個線性變換,即對任意的明文字元x,對應的密文字元為
,其中,a,b∈Z26,且要求gcd(a,26)=1,函數e(x)稱為仿射加密函數。
❽ 線性代數中 ||A|A的負1次方| 什麼意思
首先|A|是一個數字
即矩陣A的行列式
那麼再乘以A^-1即A的逆矩陣
對|A|A^-1再取行列式
得到|A|^n /|A|=|A|^(n-1)
n表示行列式的階數
❾ 仿射密碼的解密舉例
本例是按照上例來解密的,也就是用仿射密碼解密密文AXG,密鑰k=(7,3)。
三個字母對應的數值是0、23、6。解密如下:
由解密Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1);
可知k3×7=1(mod 26)(其實,就是1/mod26),也就是存在整數t,使7×k3+26t=1。(1)
利用輾轉相除法求解k3:
26 = 7 * 3 + 5;(2)(對26作形如:a * b + c,其中 c 就是余數)
7 = 5 * 1 + 2;(3)(作形如: a = c * m + n ,其中 a ,c 是上一步的, m 是乘數 ,n 是余數)
5 = 2 * 2 + 1;(一直循環上一步,直到余數 n = 1)
進行回代:
1 = 5 - 2 * 2
= 5 - (7 - 5 * 1) * 2(第一個2用(3)式來代替,也就是2 = 7 - 5 * 1)
= 3 * 5 - 2 * 7
= 3 * (26 - 7 * 3) - 2 * 7(5用(2)式來代替,也就是5 = 26 - 7 * 3)
= -11 * 7 + 3 * 26(直到不用進行代替,也就是得到只有7和26的表達式)
對比(1)式可知:t = 3 ,k3 = -11;
所以:Dk(c)=k3(c- k2) mod n <=> Dk(c)=-11(c- 3) mod 26 .
對於第一位 A :
-11 ( 0 - 3 ) mod 26 = ( -11 * -3 )mod 26 = 7;
對於第二位 X :
-11 ( 23 - 3 ) mod 26 = ( -11 * 20 ) mod 26 = ( -220 ) mod 26 = ( 26 * -9 ) + 14 = 14;
( 用計算器求 (-220) mod 26 ,不同的計算器會有不同的結果,網路的計算器求得就是 14 ,直接網路搜索:(-220) mod 26 就可以了,不能直接在計算器上輸入 -220mod26 ,那樣會得出負數。其實,可以這樣算,算出(-11)mod 26 =15,再計算 (15 * 20)mod26 = 14)
對於第三位 G :
-11 ( 6 - 3 ) mod 26 = ( -11 * 3 )mod 26 = ( -33 )mod 26 = 19;(計算方法如上)
三個明文值為 7,14,19,對應的明文是HOT,也就是hot。
❿ 矩陣的-1次方是什麼意思
矩陣的-1次方如A^(-1)表示矩陣A的逆矩陣
逆矩陣: 設A是數域上的一個n階方陣,若在相同數域上存在另一個n階矩陣B,使得: AB=BA=E。 則稱B是A的逆矩陣,而A則被稱為可逆矩陣。
求法:
A^(-1)=(1/|A|)×A* ,其中A^(-1)表示矩陣A的逆矩陣,其中|A|為矩陣A的行列式,A*為矩陣A的伴隨矩陣。
(10)仿射密碼中的a的負一是什麼意思擴展閱讀:
矩陣的應用:
1、圖像處理
在圖像處理中圖像的仿射變換一般可以表示為一個仿射矩陣和一張原始圖像相乘的形式 。
2、線性變換及對稱
線性變換及其所對應的對稱,在現代物理學中有著重要的角色。例如,在量子場論中,基本粒子是由狹義相對論的洛倫茲群所表示,具體來說,即它們在旋量群下的表現。
內含泡利矩陣及更通用的狄拉克矩陣的具體表示,在費米子的物理描述中,是一項不可或缺的構成部分,而費米子的表現可以用旋量來表述。描述最輕的三種誇克時,需要用到一種內含特殊酉群SU(3)的群論表示;
物理學家在計算時會用一種更簡便的矩陣表示,叫蓋爾曼矩陣,這種矩陣也被用作SU(3)規范群,而強核力的現代描述──量子色動力學的基礎正是SU(3)。
還有卡比博-小林-益川矩陣(CKM矩陣):在弱相互作用中重要的基本誇克態,與指定粒子間不同質量的誇克態不一樣,但兩者卻是成線性關系,而CKM矩陣所表達的就是這一點。
3、量子態的線性組合
1925年海森堡提出第一個量子力學模型時,使用了無限維矩陣來表示理論中作用在量子態上的運算元。這種做法在矩陣力學中也能見到。例如密度矩陣就是用來刻畫量子系統中「純」量子態的線性組合表示的「混合」量子態 。
另一種矩陣是用來描述構成實驗粒子物理基石的散射實驗的重要工具。當粒子在加速器中發生碰撞,原本沒有相互作用的粒子在高速運動中進入其它粒子的作用區,動量改變,形成一系列新的粒子。
這種碰撞可以解釋為結果粒子狀態和入射粒子狀態線性組合的標量積。其中的線性組合可以表達為一個矩陣,稱為S矩陣,其中記錄了所有可能的粒子間相互作用 。
4、簡正模式
矩陣在物理學中的另一類泛應用是描述線性耦合調和系統。這類系統的運動方程可以用矩陣的形式來表示,即用一個質量矩陣乘以一個廣義速度來給出運動項,用力矩陣乘以位移向量來刻畫相互作用。
求系統的解的最優方法是將矩陣的特徵向量求出(通過對角化等方式),稱為系統的簡正模式。這種求解方式在研究分子內部動力學模式時十分重要:系統內部由化學鍵結合的原子的振動可以表示成簡正振動模式的疊加 。描述力學振動或電路振盪時,也需要使用簡正模式求解 。
5、幾何光學
在幾何光學里,可以找到很多需要用到矩陣的地方。幾何光學是一種忽略了光波波動性的近似理論,這理論的模型將光線視為幾何射線。採用近軸近似(英語:paraxial approximation),假若光線與光軸之間的夾角很小,則透鏡或反射元件對於光線的作用。
可以表達為2×2矩陣與向量的乘積。這向量的兩個分量是光線的幾何性質(光線的斜率、光線跟光軸之間在主平面(英語:principal plane)的垂直距離)。這矩陣稱為光線傳輸矩陣(英語:ray transfer matrix),內中元素編碼了光學元件的性質。
對於折射,這矩陣又細分為兩種:「折射矩陣」與「平移矩陣」。折射矩陣描述光線遇到透鏡的折射行為。平移矩陣描述光線從一個主平面傳播到另一個主平面的平移行為。
由一系列透鏡或反射元件組成的光學系統,可以很簡單地以對應的矩陣組合來描述其光線傳播路徑。