题目描述

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.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
char[] enc = in.nextLine().toCharArray();
char[] unEnc = in.nextLine().toCharArray();
Encrypt(enc);
System.out.println(charsToStr(enc));
unEncrypt(unEnc);
System.out.println(charsToStr(unEnc));
}
}
private static void unEncrypt(char[] chars){
for(int i=0;i<chars.length ;i++){
if(isDigits(chars[i])){
if(chars[i] == '0'){
chars[i] = '9';
}else{
chars[i] = (char) (chars[i] - 1);
}
}else if(isUpperCase(chars[i])){
if(chars[i] == 'A')
chars[i] = 'z';
else
chars[i] = (char) (chars[i] - 'A' + 'a' -1);
}else if(isLowCase(chars[i])){
if(chars[i] == 'a')
chars[i] = 'Z';
else
chars[i] = (char) (chars[i] - 'a' + 'A' -1 );
} }
} private static void Encrypt(char[] str){
for(int i=0;i<str.length ;i++){
if(isDigits(str[i])){
if(str[i] == '9'){
str[i] = '0';
}else{
str[i] = (char) (str[i] + 1);
}
}else if(isUpperCase(str[i])){
if(str[i] == 'Z')
str[i] = 'a';
else
str[i] = (char) (str[i] - 'A' + 'a' +1);
}else if(isLowCase(str[i])){
if(str[i] == 'z')
str[i] = 'A';
else
str[i] = (char) (str[i] - 'a' + 'A' +1 );
} }
}
private static String charsToStr(char[] chars){
StringBuffer sb = new StringBuffer();
for(char ch:chars){
sb.append(ch);
}
return sb.toString();
} private static boolean isDigits(char ch){
if(ch >= '0' && ch<='9')
return true;
return false;
}
private static boolean isUpperCase(char ch){
if(ch>='A' && ch<='Z')
return true;
return false;
}
private static boolean isLowCase(char ch){
return ch>='a' && ch<='z';
}
private static boolean isWord(char ch){
return isUpperCase(ch) || isLowCase(ch);
}
}

华为OJ:字符串加解密的更多相关文章

  1. android中使用jni对字符串加解密实现分析

    android中使用jni对字符串加解密实现分析 近期项目有个需求.就是要对用户的敏感信息进行加密处理,比方用户的账户password,手机号等私密信息.在java中,就对字符串的加解密我们能够使用A ...

  2. iOS - (base64对字符串加解密)

    今天公司让做支付系统,为了安全起见,需要对一些数据进行加密,然而我首想到的就是 base64 ,严格来说这不是一种加密方式,这只是将原有的一些字符串或者其它的一些文本进行一个转化而已,就是转化成数字, ...

  3. iOS开发:用DES对字符串加解密

    参考http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html,做了个小修改,实现PHP,JAVA,Objective-c加解密结果相同 ...

  4. C#常用字符串加解密方法封装

    C#中常用的字符串加密.解密方法封装,包含只加密但不解密的方法.收藏起来备用. //方法一 //须添加对System.Web的引用 //using System.Web.Security; /// & ...

  5. C++ 简单字符串加解密(转载)

    #include <iostream.h> #include <windows.h> #include <tchar.h> void EncodeString(LP ...

  6. 华为OJ—字符串排序(排序,忽略指定字符排序)

    http://career-oj.huawei.com/exam/ShowProblemInfo?id=2168 编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区 ...

  7. 基于Crypto++的aes 字符串加解密实现

    esaes.h: #ifndef ESAES_H #define ESAES_H #include <cryptopp/aes.h> #include <iostream> # ...

  8. 华为oj 字符串最后一个单词的长度

    <img alt="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" src="htt ...

  9. 华为OJ:字符串反转

    非常easy,逆向输出就好了. import java.util.Scanner; public class convertString { public static void main(Strin ...

随机推荐

  1. scrapy 错误

    1. 安装win32时候 Unable to find vcvarsall.bat 解决方法: 1.如果你没有安装vc,去微软下个 VS2008 的免费版就能解决此问题. 2.如果你安装的是VS201 ...

  2. MATLAB中匿名函数与符号函数的转换

    符号函数举例: syms x y=x+1; y1=diff(y); %求导 匿名函数举例: z=@(x)(x(1)+2*x(2)); t=z([2 3]); %计算z在x=[2 3]处的值 z=@(x ...

  3. c编程之排序

    1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 typedef struct Nod ...

  4. 我是如何基于angular+requirejs+node做SPA项目架构的

    本文章已经录制视频,地址是:http://v.youku.com/v_show/id_XODI3MjYyODI0.html 前端这两年技术飞速发展,各种优秀框架层出不穷.本文不是讨论各框架的比较,也不 ...

  5. ASP.NET本质论阅读----线程与异步

    线程 概要:操作系统通过线程对程序的执行进行管理 线程的数据结构:1.线程的核心对象(包含线程的当前寄存器状态),调用线程时-寄存器状态被加载到CPU中. 2.线程环境块TEB:一块用户模式下的内存 ...

  6. SharedPreferences实现记住密码功能

    SharedPerferences 简单介绍 用于保存简单的键值对数据: 它将数据放在 /data/data/<package name>/shared_prefs目录下,用xml文件保存 ...

  7. selenium--嵌套frame定位

    网页源码: 案例1 :iframe有id.name属性 网页上有3个frame:header.menu.main,分别代码顶部.左侧.右侧(其中menu.main在另外一个frameset中) 如何定 ...

  8. 1497: [NOI2006]最大获利 - BZOJ

    Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一 ...

  9. Leetcode#128 Longest Consecutive Sequence

    原题地址 1. 把所有元素都塞到集合里2. 遍历所有元素,对于每个元素,如果集合里没有,就算了,如果有的话,就向左向右拓展,找到最长的连续范围,同时在每次找的时候都把找到的删掉.这样做保证了同样的连续 ...

  10. 导入ApiDemo报错,找不到R文件

    1.先检查当前ApiDemo对应的SDK版本是否一致(项目右键-Properties-Android) 2.查看是什么错误.我的就是layout中的progressbar_2.xml中所有组件的id前 ...