簡單的加密系統(位運算)
加密程式碼:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N sizeof(unsigned char)*8
typedef unsigned char uchar;
uchar rol(uchar x,int n)
{
uchar l=x<<n;
uchar r=x>>(N-n);
uchar res=l|r;
return res;
}
uchar ror(uchar x,int n)
{
uchar l=x>>n;
uchar r=x<<(N-n);
uchar res=l|r;
return res;
}
int main()
{
char key[10];
char psd[10];
int newkey[10];
int ecykey[10];
int i;
puts("請輸入加密系統關鍵字序列key:");
gets(key);
puts("請輸入使用者原始密碼:");
gets(psd);
newkey[0]=rol(key[0],3);
newkey[1]=key[1];
newkey[2]=ror(key[2],3);
ecykey[0]=psd[0]^newkey[0];
ecykey[3]=psd[3]^newkey[0];
ecykey[6]=psd[6]^newkey[0];
ecykey[1]=psd[1]^newkey[1];
ecykey[4]=psd[4]^newkey[1];
ecykey[7]=psd[7]^newkey[1];
ecykey[2]=psd[2]^newkey[2];
ecykey[5]=psd[5]^newkey[2];
puts("使用者加密後的密碼序列:");
for(i=0;i<=7;i++)
printf("%d ",ecykey[i]);
return 0;
}
解密程式碼:
#include<stdio.h>
#include<string.h>
#define N sizeof(unsigned char)*8
typedef unsigned char uchar;
uchar rol(uchar x,int n)
{
uchar l=x<<n;
uchar r=x>>(N-n);
uchar res=l|r;
return res;
}
uchar ror(uchar x,int n)
{
uchar l=x>>n;
uchar r=x<<(N-n);
uchar res=l|r;
return res;
}
int main()
{
char key[10];
char psd[10];
int newkey[10];
int ecykey[10];
int i;
puts("請輸入加密系統關鍵字序列key:");
gets(key);
puts("請輸入使用者加密後的密碼序列:");
for(i=0;i<8;i++)
scanf("%d",ecykey+i);
newkey[0]=rol(key[0],3);
newkey[1]=key[1];
newkey[2]=ror(key[2],3);
psd[0]=ecykey[0]^newkey[0];
psd[3]=ecykey[3]^newkey[0];
psd[6]=ecykey[6]^newkey[0];
psd[1]=ecykey[1]^newkey[1];
psd[4]=ecykey[4]^newkey[1];
psd[7]=ecykey[7]^newkey[1];
psd[2]=ecykey[2]^newkey[2];
psd[5]=ecykey[5]^newkey[2];
puts("使用者原始密碼為:");
for(i=0;i<8;i++)
printf("%c",psd[i]);
puts("");
return 0;
}
相關推薦
簡單的加密系統(位運算)
加密程式碼: #include<stdio.h> #include<string.h> #include<stdlib.h> #define N sizeof(unsigned char)*8 typedef unsigned char
加密可以這樣簡單(位運算)
通過位運算的“^”異或運算子把字串與一個指定的值進行異或運算,從而改變字串每個字元的值,這樣就可以得到一個加密後的字串。當把加密後的字串作為程式輸入內容,異或運算會把加密後的字串還原為原有字串的值,如圖 建立Example類,在該類的主方法中建
實例11 加密可以這樣簡單(位運算)
sta 組元 public ati () 結果 for bsp new package wjf;import java.util.Scanner;public class wjf1 { public static void main(String[] args){
51Nod 1069 Nim遊戲 (位運算)
過程 cstring nco 表示 比賽 pac 如果 tdi ace 題目鏈接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1069 有N堆石子。A B兩個人輪流拿,A先拿。每次只
[LeetCode] 137. Single Number II (位運算)
清零 一次 .com blog 適用於 soft hat ever rip 傳送門 Description Given an array of integers, every element appears three times except for one, w
關於Java實現的進位制轉化(位運算)
一、需求: 最近在做檔案傳輸的東西,檔案傳輸當然是傳輸很重要,包括編碼格式以及進位制的統一。 簡略的說一下這次做的東西:首先檔案是按照塊來發送的,一塊一塊大的發,但是,傳送的過程是這樣的; 先發送頭部,頭部包括三部分:1.一個int型別的檔案Id, 2.一個long型別的偏
計算一個二進位制數中數字“1”的個數(位運算)
int numberOfOne( unsigned value ) { int count; for( count = 0; value != 0; value >>= 1 ) if( ( value & 1 ) != 0 )//如果最低位是1,就增加計數器的
BZOJ 2728: [HNOI2012]與非(位運算)
題意 定義 NAND(與非)運算,其運算結果為真當且僅當兩個輸入的布林值不全為真,也就是 A NAND B = NOT(A AND B) ,運算位數不會超過 \(k\) 位, 給你 \(n\) 個整數 \(A_i\) ,這些數能任意進行無數次與非運算,最後問能運算出多少個在 \([L, R]\) 區間的數
求一組數的出現一次的數(位運算)
a^a=0 ; a^0=a; 一個數只出現一次,可以將整個陣列進行^處理,相同的會為0,直到出現一次的數^後即為它本身。 有a、b兩個數只出現一次,可以先將整個陣列^處理,得到c,c =a^b,找出
1019 Separate the Animals (35 分)DFS或BFS搜尋+(位運算)狀態去重
題目連結:https://pintia.cn/problem-sets/994805148990160896/problems/994805149963239424 直接暴力搜尋每一種障礙的狀態,用dfs和bfs都可以(我用的dfs),沒找到一種狀態bfs檢查現在有多少個洞,有沒有動物相連。
經典混合加密系統(java實現)
此理論知識摘自《電子商務安全導論》一書 由於網路協議的開放行,資料在網路傳輸的過程中,難以避免的會出現安全性問題. 實際上,在一次資訊傳送過程中,可以綜合利用訊息加密、數字信封、雜湊函式和數字簽名實現安全性、完整性、可鑑別性和不可否認.具體過程如下: (1)傳送方A ①求明文訊息
N皇后問題(位運算)
描述 會下國際象棋的人都很清楚:皇后可以在橫、豎、斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上(有8 * 8個方格),使它們誰也不能被吃掉!這就是著名的八皇后問題。 在國際象棋棋盤上放置
(位運算)把字串轉換成整數
public int StrToInt(String str) { if (str == null || str.len
300.4 加密(利用位運算^)
iuc com mar style 加密 ref href lan target 5VLB腳5錄N淺茨陶1煙http://tushu.docin.com/eyer5452 2M73木畢傻7UKA來諗5http://tushu.docin.com/sina_63452072
使用Struts2和jQuery EasyUI實現簡單CRUD系統(五)——jsp,json,EasyUI的結合
元素 word cli resultset sheet 傳輸 charset {} tco 這部分比較復雜,之前看過自己的同學開發一個選課系統的時候用到了JSON,可是一直不知道有什麽用。寫東西也沒用到。所以沒去學他。然後如今以這樣的懷著好奇心,這是做什麽用的,這是怎麽用
nyist oj 138 找球號(二)(hash 表+位運算)
pan char s geo 運算 arch font msu 哈希 next 找球號(二) 時間限制:1000 ms | 內存限制:65535 KB 難度:5 描寫敘述 在某一國度裏流行著一種遊戲。遊戲規則為:現有一堆球中。每一個球上都有一個整數編號i
HDU 1198 Farm Irrigation(並查集+位運算)
another org des clas accepted som using red wan Farm Irrigation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java
1315 合法整數集(位運算+模擬)
去掉 出現 its eml nbsp out %d 技術分享 aps 1315 合法整數集 題目來源: TopCoder 基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題 收藏 關註 一個整數集合S是合法的,指S的任意子集
軟件補丁問題(SPFA+位運算)
%d 時空 容易 轉移 and DC 修復 兩種 += 洛谷P2761 1.考慮到所有的錯誤只有“修復,未修復”兩種情況,所以可以用0,1標記壓縮狀態,采用位運算減少時空浪費。 又考慮到有修復時間的關系,將時間抽象成邊,將狀態抽象為點(設修復為0,未修復為1)最後從(1&l
HDU - 3006 The Number of set(狀態壓縮位運算)
memset scl 所有 targe oid print push out queue http://acm.hdu.edu.cn/showproblem.php?pid=3006 題意 給定n個集合,每個集合都是由大於等於1小於等於m的數字組成,m最大為14。問由給