字符串加解密

題目描述

題目描述 1、對輸入的字符串進行加解密,并輸出。 2加密方法為: 當內容是英文字母時則用該英文字母的后一個字母替換,同時字母變換大小寫,如字母a時則替換為B;字母Z時則替換為a; 當內容是數字時則把該數字加1,如0替換1,1替換2,9替換0; 其他字符不做變化。 3、解密方法為加密的逆過程。 ? 接口描述: ????實現接口,每個接口實現1個基本操作: void?Encrypt?(char?aucPassword[],?char?aucResult[]):在該函數中實現字符串加密并輸出 說明: 1、字符串以\0結尾。 2、字符串最長100個字符。 ? int?unEncrypt?(char?result[],?char?password[]):在該函數中實現字符串解密并輸出 說明: 1、字符串以\0結尾。 ????2、字符串最長100個字符。
輸入描述:
輸入說明  
輸入一串要加密的密碼  
輸入一串加過密的密碼


輸出描述:
輸出說明  
輸出加密后的字符  
輸出解密后的字符

輸入例子:
abcdefg BCDEFGH

輸出例子:
BCDEFGH abcdefg



方法一:
import java.util.Scanner;
/**
?* Created by Administrator on 2015/12/23.
?*/
public class Main {
????public static void main(String[] args) {
????????Scanner sc=new Scanner(System.in);
????????while (sc.hasNext()){
????????????String strA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
????????????String strB="bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA1234567890";
????????????String str1=sc.next();
????????????String str2=sc.next();
????????????StringBuffer sb1=new StringBuffer();
????????????StringBuffer sb2=new StringBuffer();
????????????for(int i=0;i<str1.length();i++){
????????????????sb1.append(strB.charAt(strA.indexOf(str1.charAt(i))));
????????????}
????????????for(int i=0;i<str2.length();i++){
????????????????sb2.append(strA.charAt(strB.indexOf(str2.charAt(i))));
????????????}
????????????System.out.println(sb1);
????????????System.out.println(sb2);
????????}
????}
}
方法二:
import java.util.Scanner;
/**
?* Author: 王俊超
?* Date: 2015/12/23 13:31
?* All Rights Reserved !!!
?*/
public class Main {
????public static void main(String[] args) {
????????Scanner scanner = new Scanner(System.in);
//??????? Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
????????while (scanner.hasNext()) {
????????????String input = scanner.nextLine();
????????????System.out.println(encrypt(input));
????????????input = scanner.nextLine();
????????????System.out.println(unencrypt(input));
????????}
????????scanner.close();
????}
????/**
?????* 字符串解密
?????*
?????* @param s
?????* @return
?????*/
????private static String unencrypt(String s) {
????????char[][] mask = {
????????????????{'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y'},
????????????????{'Z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'},
????????????????{'9', '0', '1', '2', '3', '4', '5', '6', '7', '8'}
????????};
????????return convert(s, mask);
????}
????/**
?????* 字符串加密
?????*
?????* @param s
?????* @return
?????*/
????private static String encrypt(String s) {
????????char[][] mask = {
????????????????{'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a'},
????????????????{'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A'},
????????????????{'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}
????????};
????????return convert(s, mask);
????}
????/**
?????* 根據掩碼表對字符串進行轉換
?????*
?????* @param s
?????* @param mask
?????* @return
?????*/
????private static String convert(String s, char[][] mask) {
????????StringBuilder builder = new StringBuilder(s.length());
????????for (int i = 0; i < s.length(); i++) {
????????????char c = s.charAt(i);
????????????if (c >= 'A' && c <= 'Z') {
????????????????builder.append(mask[0][c - 'A']);
????????????} else if (c >= 'a' && c <= 'z') {
????????????????builder.append(mask[1][c - 'a']);
????????????} else {
????????????????builder.append(mask[2][c - '0']);
????????????}
????????}
????????return builder.toString();
????}
}
 

轉載于:https://www.cnblogs.com/bb3q/p/5073241.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375237.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375237.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375237.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Win32 一個helloworld對話框

.386.model flat,stdcalloption casemap:none include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib.data ;數據段titleS db helloworld,0 messageS db hello,welcome to win32,0.code ;代碼段start: invoke Messa…

Python補充06 Python之道

Python補充06 Python之道 作者&#xff1a;Vamei 出處&#xff1a;http://www.cnblogs.com/vamei 歡迎轉載&#xff0c;也請保留這段聲明。謝謝&#xff01; Python有一個彩蛋&#xff0c;用下面語句調出&#xff1a; import this 該彩蛋的文檔記錄于PEP 20。 語句執行之后&…

傳送指令 MOV

MOV dest,src ;dest <-- srcMOV指令把一個字節或字從源地址src送入目的地址destsrc源操作數可以是立即數,寄存器,段寄存器,存儲單元MOV AX,10 ;MOV 寄存器,數據 eg-1MOV AX,BX ; MOV 寄存器,寄存器 eg-2MOV AX,[0] ;MOV 寄存器,內存單元 eg-3MOV [0],AX ;MOV 內存單元…

四舍五入函數

四舍五入函數 Math.Round()posted on 2015-12-25 15:58 低音炮可怕男子 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/DreamTime/p/5076201.html

串傳送指令MOVSB MOVSW

MOVSB(move string byte)ES:DI <-- DS:SI 把ds:si所指地址內存單元中的數據送到es:di所指向的內存單元中,源地址數據保持不變,si和di指向下一個要傳送的數據傳送的次數(字符串長度)保存在CX寄存器中并用cld/std說明si和di是遞增還是遞減,最后用REP指令重復執行MOVSB直到cx0終…

file_get_content和curl的性能比較

今天在獲取微信一張二維碼圖片時發現使用php中的file_get_content方式和curl方式竟然相差了50倍左右&#xff0c;直接暈倒&#xff01;&#xff01;&#xff01; 轉載于:https://www.cnblogs.com/jenqz/p/5077996.html

分段機制

根據編程需要可將地址連續的內存單元看作是一個段段地址*16來定位段的起始地址偏移地址來定位這個段中的各個單元一個段的大小最大為64K,因為偏移地址是16位,16位的尋址能力為64KDS:[BX] 0C8C:0000; 段地址為0C8CH; 偏移地址0H&#xff5e;FFFFH 大小為64K0C8C:FFFF一般匯編源…

java定時器的使用(Timer)

java定時器的使用&#xff08;Timer&#xff09;1、在應用開發中&#xff0c;常常須要一些周期性的操作&#xff0c;比方每5分鐘運行某一操作等。對于這種操作最方便、高效的實現方式就是使用java.util.Timer工具類。private java.util.Timer timer;timer new Timer(true);tim…

nginx 配置優化詳解

# nginx不同于apache服務器&#xff0c;當進行了大量優化設置后會魔術般的明顯性能提升效果 # nginx在安裝完成后&#xff0c;大部分參數就已經是最優化了&#xff0c;我們需要管理的東西并不多#user nobody;#阻塞和非阻塞網絡模型&#xff1a; #同步阻塞模型&#xff0c;一請…

標號 變量

標號&#xff1a;標記了指令,數據,段的起始地址data segment str db ‘hello’data endscode segment start: jmp begin begin: mov ax,datacode ends end startstr標號(數據標號通常又叫變量),表示內存單元地址和長度start,begin標號表示了指令mov ax,data的地址data ,code標號…

ASP.NET知識集

ASP.NET知識集 編輯刪除轉載2015-06-23 16:31:55標簽&#xff1a;it//刪除指定行數據時&#xff0c;彈出詢問對話框 ((LinkButton)(e.Row.Cell[7].Controls[0]).Attributes.Add("onclick","return confirm(是否刪除當前數據&#xff01;)"); //注登錄&…

操作符offset和seg

offset獲得標號的偏移地址seg獲得標號的段地址mov ax,offset beginjmp axmov ds,axbegin: add ax,bx-u0CA0:0000 B80700 MOV AX,0007 ;編譯器已經把標號變成add ax,bx處的地址了0CA0:0003 FFE0 JMP AX0CA0:0005 8ED8 MOV DS,AX0CA0:0007 …

數制學習筆記

數制的基本概念 一.數碼 數制中表示基本數值大小的不同數字符號。例如&#xff0c;十進制有10個數碼&#xff1a;0、1、2、3、4、5、6、7、8、9。二.基數 數制所使用數碼的個數。例如&#xff0c;二進制的基數為2&#xff1b;十進制的基數為10。三.位權 數制中某一位上的1所表示…

數據結構問題集錦 - Find Median from Data Stream

臨近期末&#xff0c;鴨梨山大啊&#xff0c;就不多說了。這道題的要求就是&#xff0c;給定一串輸入&#xff0c;在中間任何一個時候&#xff0c;都能夠求出添加到一半的序列的中位數。 大概考慮一下&#xff0c;如果用動態數組來進行元素插入的話&#xff0c;盡管這樣查詢中位…

所處理的數據在什么地方 有多長 如何定義 如何尋找

處理的數據在什么地方&#xff1a; 立即數(idata)1,3,10,3F 寄存器AX,AL,BX 內存單元,可用尋址方式給出DS:[idata],ds:[0]處理的數據有多長: MOV AX,1 ;字操作 MOV AL,1 ;字節操作 MOV BYTE PTR DS:[0],1 ;字節操作 MOV WORD PTR DS:[0],1 ;字操作 PUSH/POP 進行的是字操作 數據…

invoke偽指令

通過反匯編helloworld對話框來看invoke偽指令 invoke是調用WinAPI的偽指令 把上一個helloworld對話框編譯并連接成hello.exe然后用OD打開得到下圖 前文說過ML.EXE編譯invoke時會把invoke的參數PUSH入棧和一個CALL,在代碼段中只有兩個invoke指令 invoke MessageBox,NULL,offset …

Azure Virtual Network, 虛擬網絡

云上的虛擬網絡把不同用戶完全的隔離開來。同時可以自己對虛擬網絡進行定制&#xff0c;設置各種安全訪問策略&#xff0c;配置load balancer等等。 在新的基于Azure Resource Manager (ARM)的部署方式中&#xff0c;虛擬網絡已經是默認設置了。也就是說在通過ARM部署的VM&…

百度地圖API的第一次接觸——自定義控件

1.定義一個控件類&#xff0c;即function function ZoomControl(){ // 設置默認停靠位置和偏移量 this.defaultAnchor BMAP_ANCHOR_TOP_LEFT; this.defaultOffset new BMap.Size(10, 10); } 2.通過JavaScript的prototype屬性繼承于BMap.Control ZoomControl.pr…

include語句

程序用到MessageBox和ExitProcess函數它們分別在user32..dll和Kernel32.dll中 那么就必須在程序中使用include語句包含這兩個庫文件,此時程序中可以使用user32..dll和Kernel32.dll中所有的函數 include相當于java中import導入包語句

Spring MVC Controller與jquery ajax請求處理json

在用 spring mvc 寫應用的時候發現jquery傳遞的【json數組對象】參數后臺接收不到&#xff0c;多訂單的處理&#xff0c;ajax請求&#xff1a; var cmd {orders:[{"storeId":"0a1", "address":"西斗門路2號", "goods":[{&…