【C++密码加密解密】6位整数明码加密和解密
生活随笔
收集整理的這篇文章主要介紹了
【C++密码加密解密】6位整数明码加密和解密
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【要求】
編寫一個簡單加密程序。輸入一個6位整數的明碼,按以下方法加密:首先,將每位數字替換成它與7相加之和再用10求模的結果;然后逆置;最后輸出密碼。再編寫程序,把這個密碼還原成明碼。若輸入錯誤,則顯示錯誤信息后退出程序。
例如,輸入原碼數據n為:200911,則顯示密碼n1為:886779,解密后的原碼n2為:200911。
注:密碼n1不一定是6位整數,但明碼n和n2是相等的6位整數。
【代碼】
【解釋】
主要來講一講解密過程,加密時候我們是用“每個數字與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位整数明码加密和解密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教室录播系统方案_录播教室装修方案
- 下一篇: QT重写QSortFilterProxy