日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【C++密码加密解密】6位整数明码加密和解密

發布時間:2023/12/31 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C++密码加密解密】6位整数明码加密和解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【要求】
編寫一個簡單加密程序。輸入一個6位整數的明碼,按以下方法加密:首先,將每位數字替換成它與7相加之和再用10求模的結果;然后逆置;最后輸出密碼。再編寫程序,把這個密碼還原成明碼。若輸入錯誤,則顯示錯誤信息后退出程序。
例如,輸入原碼數據n為:200911,則顯示密碼n1為:886779,解密后的原碼n2為:200911。
注:密碼n1不一定是6位整數,但明碼n和n2是相等的6位整數。
【代碼】

#include<iostream> using namespace std; int main() { int i,n,n1=0,n2=0,t=0; cout<<“輸入一個6位整數:”; cin>>n; if(n>999999||n<100000) { cout<<“輸入錯誤,退出程序。\n”; return 0; } //加密 for(i=1; i<=6; i++) { n1*=10; t=n%10; n1+=(t+7)%10; n=(n-t)/10; } cout<<“加密:”<<n1<<endl; //解密 for(i=1; i<=6; i++) { n2*=10; t=n1%10; if(t>=7) n2+=t-7; else n2+=t+10-7; n1=(n1-t)/10; } cout<<“解密:”<<n2<<endl; }

【解釋】
主要來講一講解密過程,加密時候我們是用“每個數字與7相加之和再用10求模”,最后把結果逆置。逆置很好處理,只要從低位到高位,把每一位取到的數字每一次都乘10再加上下一次的數字即可。
那么,
(x+7)%10=y;知y如何求x?
x是正數。
如果x是0,1,2,那么x+7就不會產生進位,(x+7)%10就是(x+7)本身。因此x=y-7。
反之,如果x是3,4,5,6,7,8,9。x+7就會進位。(x+7)%10,可以理解成,x的長度加上7的長度,由于超過了10,把10及以下長度砍去,最后剩下部分長度就是y。因此用y+10恢復成沒砍掉以前的(x+7)的長度,再減去7就得到x。

總結

以上是生活随笔為你收集整理的【C++密码加密解密】6位整数明码加密和解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。