关于4位整数利用求模来进行加密解密的问题. 题目大概意思: 任意一个4位整数,对每一位数加7,然后用得到的新值对10求模.然后对求模得到的数值按照第一位与第三位、第二位与第四位交换位置的方式排列.再重新编一个解密方法,将加密的4位数解密成原来的数. 我不明白将加密的4位数解密成原来的数怎么实现, 如 10 % 10 == 0 , 0 % 10 == 0 ,两个都是0 , 该怎么解密还原为10 , 0 呢? 还是我理解错题目的意思? 有劳各位指教,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道我没有理解对楼主题目的意思,代码没有检测错误,也没有经过优化,楼主将就看看吧。public class test{ //测试函数 public static void main(String[] args) { int[] array = {1234, 1000, 3021, 5412, 9999, 1254, 6555, 2345}; for ( int i = 0; i < array.length; i++ ) { System.out.println("待加密数字: " + array[i] + " 加密后的数字: " + encrypt(array[i]) + " 解密后的数字: " + rip(encrypt(array[i]))); } } //加密函数 public static String encrypt(int oldNumber) { char[] array = new char[4]; array = (String.valueOf(oldNumber)).toCharArray(); for ( int i = 0; i < array.length/2; i++ ) { char temp = array[i]; array[i] = array[i+2]; array[i+2] = temp; } StringBuffer newNumber = new StringBuffer(); for ( int i = 0; i < array.length; i++ ) { newNumber.append(((Character.digit(array[i],10)+7)%10)); } return newNumber.toString(); } //解密函数 public static String rip(String cryptogram) { char[] array = new char[4]; array = cryptogram.toCharArray(); for ( int i = 0; i < array.length/2; i++ ) { char temp = array[i]; array[i] = array[i+2]; array[i+2] = temp; } StringBuffer oldNumber = new StringBuffer(); for ( int i = 0; i < array.length; i++ ) { oldNumber.append(getOldNumber(array[i])); } return oldNumber.toString(); } //钥匙,解密的关键所在,楼主只需把这儿弄懂就行了 private static int getOldNumber(char ch) { int temp = Character.digit(ch,10); if ( temp <= 6 ) { return (temp+10)-7; } else { return temp-7; } }} 感谢 happydivid(泓笑) 大哥~ 我现在看看 eclipse生成javadoc出错谁知道问题所在 用JAVA代码怎么对JTable表格实现追加和删除记录 给个资源把 JAVA中堆栈的应用,唉,我真是不会了,救命啊,做不出今晚回不去家了 关于Arraylist的问!!! java自动下载文件 关于写xml文件的一个问题,请求帮助 请提供比较详细的nat资料,或是代理的代码! thinking in java中的经典难题,关注thinking in java的人士请近!! 请问JAVA加密体系中有IDEA算法吗??? java的一个小问题 大家帮我看看这段程序的错误在哪呢
public class test
{
//测试函数
public static void main(String[] args)
{
int[] array = {1234, 1000, 3021, 5412, 9999, 1254, 6555, 2345};
for ( int i = 0; i < array.length; i++ )
{
System.out.println("待加密数字: " + array[i] + " 加密后的数字: " + encrypt(array[i]) + " 解密后的数字: " + rip(encrypt(array[i])));
}
}
//加密函数
public static String encrypt(int oldNumber)
{
char[] array = new char[4];
array = (String.valueOf(oldNumber)).toCharArray();
for ( int i = 0; i < array.length/2; i++ )
{
char temp = array[i];
array[i] = array[i+2];
array[i+2] = temp;
}
StringBuffer newNumber = new StringBuffer();
for ( int i = 0; i < array.length; i++ )
{
newNumber.append(((Character.digit(array[i],10)+7)%10));
}
return newNumber.toString();
}
//解密函数
public static String rip(String cryptogram)
{
char[] array = new char[4];
array = cryptogram.toCharArray();
for ( int i = 0; i < array.length/2; i++ )
{
char temp = array[i];
array[i] = array[i+2];
array[i+2] = temp;
}
StringBuffer oldNumber = new StringBuffer();
for ( int i = 0; i < array.length; i++ )
{
oldNumber.append(getOldNumber(array[i]));
}
return oldNumber.toString();
}
//钥匙,解密的关键所在,楼主只需把这儿弄懂就行了
private static int getOldNumber(char ch)
{
int temp = Character.digit(ch,10);
if ( temp <= 6 )
{
return (temp+10)-7;
}
else
{
return temp-7;
}
}
}