- 浏览: 527936 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
landerson:
明显就有要求的嘛
ANDROID轻量级JSON序列化和反序列化[转] -
jimode2013:
很不错,就是需要这个方法
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转] -
w11h22j33:
...
[转]NSMutableArray中的自动释放对象让我郁闷了一整天 -
w11h22j33:
UILabel* label = [[UILabel a ...
Iphone开发 -
w11h22j33:
http://mobile.51cto.com/iphone- ...
获得通讯录中联系人的所有属性[转]
http://blog.sina.com.cn/s/blog_532af66a0100a1lq.html
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class ChgAnGo {
// log4jのプロパティフィアル名
private static String LOG_PROPERTIES = "log4j.properties";
// パスワードファイルパス
private static String PASSWORD_FILEPATH = "output/password.txt";
// 反転用文字入力ファイルパス
private static String CONVERT_FILEPATH = "input/convert.txt";
// ログメッセージ:暗号化処理開始
private static String LOG_ENCRYPT_START = "文字列の暗号化開始";
// ログメッセージ:暗号化処理完了
private static String LOG_ENCRYPT_END = "文字列の暗号化完了";
// ログメッセージ:暗号化処理前
private static String LOG_ENCRYPT_BEFORE = "暗号化処理前:";
// ログメッセージ:暗号化処理後
private static String LOG_ENCRYPT_AFTER = "暗号化処理後:";
//反転用文字を取得できない場合
private static String LOG_CONVERT_KEY_READ_ERROR = "暗号化のキーワードの取得に失敗しました。";
//ファイルに出力失敗場合
private static String LOG_FILE_WRITE_ERROR = "暗号化したパスワードのファイル出力に失敗しました。";
// コンソールメッセージ:入力メッセージ
private static String CONSOLE_INPUT_MESSAGE = "暗号化したいパスワードを入力してください。";
// コンソールメッセージ:入力した文字列バイト数>40場合
private static String CONSOLE_INPUT_COUNT_ERROR = "エラー:40バイト以内文字列を入力してください。";
// コンソールメッセージ:半角英数字、半角記号以外が入力された場合
private static String CONSOLE_INPUT_CHAR_ERROR = "エラー:半角英数字、半角記号を入力してください。";
// コンソールメッセージ:ファイルに出力失敗場合
private static String CONSOLE_FILE_WRITE_ERROR = "エラー:暗号化したパスワードをファイルに出力するのは失敗しました。";
// コンソールメッセージ:反転用文字入力ファイルを取得できない場合
private static String CONSOLE_CONVERT_KEY_READ_ERROR = "エラー:暗号化のキーワードの取得に失敗しました。";
// コンソールメッセージ:暗号化成功場合
private static String CONSOLE_SUCCESS_END = "暗号化したパスワードはoutput/password.txtに出力しました。";
// コンソールメッセージ:プログラム終了
private static String CONSOLE_END = "処理終了しました。";
// ログを出力するために、loggerを取得
private static Logger logger = Logger.getLogger(ChgAnGo.class.getName());
public static void main(String[] args) {
ChgAnGo chgAnGo = new ChgAnGo();
//log4jプロパティファイルを取得する
PropertyConfigurator.configure(LOG_PROPERTIES);
//処理開始ログ出力
logger.info(LOG_ENCRYPT_START);
try {
//暗号化したい文字列
String inStr = "";
//暗号化したい文字列の取得
//コマンドラインから入力した引数が存在(args.length==1)場合
if (args.length == 1) {
inStr = args[0];
} else {
//コマンドラインから入力した引数が不存在(args.length<>1)場合
// byte[] input = new byte[41];
//スクリーンへメッセージを出力する。
System.out.println(CONSOLE_INPUT_MESSAGE);
//スクリーンから暗号化したい文字列を取得する。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
inStr = br.readLine();
}
// 文字列のチェック
//入力した文字列バイト数>40場合
if (inStr.getBytes().length > 40) {
System.out.println(CONSOLE_INPUT_COUNT_ERROR);
} else if (inStr.getBytes().length > inStr.length()) {
// 半角英数字、半角記号以外が入力された場合
System.out.println(CONSOLE_INPUT_CHAR_ERROR);
} else if ("".equals(inStr)) {
//何も入力しない場合
System.out.println(CONSOLE_INPUT_CHAR_ERROR);
} else {
//上記以外場合、文字列に暗号化処理
//暗号化のキーワードの取得
String cstrKey = chgAnGo.getConvertKey(CONVERT_FILEPATH);
if (cstrKey != null && !"".equals(cstrKey)) {
//暗号化処理メソッドを呼び出す
String ango = chgAnGo.setEncrypt(inStr, cstrKey);
//暗号化した文字列をファイルに出力する。
chgAnGo.writeToFile(PASSWORD_FILEPATH, ango.getBytes());
//正常終了時、ログを出力する。
logger.info(LOG_ENCRYPT_BEFORE + inStr);
logger.info(LOG_ENCRYPT_AFTER + ango);
//スクリーンへメッセージを出力する。
System.out.println(CONSOLE_SUCCESS_END);
System.out.println(chgAnGo.getEncrypt(ango, cstrKey));
} else {
//反転用文字を取得できない場合、ログを出力する。
logger.info(LOG_CONVERT_KEY_READ_ERROR);
//スクリーンへメッセージを出力する。
System.out.println(CONSOLE_CONVERT_KEY_READ_ERROR);
}
}
} catch (IOException e) {
//例外エラー発生場合、詳細エラーを出力する。
logger.fatal(e.getMessage());
} finally {
//処理完了ログ出力
//スクリーンへメッセージを出力する
System.out.println(CONSOLE_END);
//「文字列の暗号化完了」ログを出力する。
logger.info(LOG_ENCRYPT_END);
}
}
protected String setEncrypt(String password, String cstrKey) {
//int[] snNum = new int[password.length()];
char[] snNum = new char[password.length()];
String result = "";
//ビット反転操作を繰り回す
for (int i = 0, j = 0; i < password.length(); i++, j++) {
//反転用文字列」<「暗号化したい文字列」場合、
//反転用文字列を繰り回して利用する
if (j == cstrKey.length())
j = 0;
//暗号化したバイト=(暗号化したい文字)^(反転用文字)^(1/(当該文字の位置+1))
//snNum[i] = password.charAt(i) ^ cstrKey.charAt(j) ^ (1 / (i + 1));
snNum[i] = (char) (password.charAt(i) ^ cstrKey.charAt(j) ^ (1 / (i + 1)));
result += (char) snNum[i];
}
//暗号化した文字列を返す。
return result;
}
protected String getEncrypt(String password, String cstrKey) {
char[] snNum = new char[password.length()];
String result = "";
//ビット反転操作を繰り回す
for (int i = 0, j = 0; i < password.length(); i++, j++) {
//反転用文字列」<「復号化したい文字列」場合、
//反転用文字列を繰り回して利用する
if (j == cstrKey.length())
j = 0;
char n = password.charAt(i);
//復号化したバイト=(復号化したい文字)^(反転用文字)^(1/(当該文字の位置+1))
snNum[i] = (char) (n ^ cstrKey.charAt(j) ^ (1 / (i + 1)));
result += snNum[i];
}
//復号化した文字列を返す。
return result;
}
protected void writeToFile(String filePath, byte[] data) throws IOException {
FileOutputStream outfile = null;
try {
//ファイルパスより、出力ファイルを開く
outfile = new FileOutputStream(filePath);
//データをファイルに出力する
outfile.write(data, 0, data.length);
//ファイルを保存する
outfile.flush();
} catch (IOException e) {
//ファイル出力失敗場合、ログを出力する。
logger.info(LOG_FILE_WRITE_ERROR);
//スクリーンへメッセージを出力する。
System.out.println(CONSOLE_FILE_WRITE_ERROR);
throw e;
} finally {
//ファイルをクローズする
if (outfile != null) {
outfile.close();
}
}
}
protected String getConvertKey(String filePath) throws IOException {
String convertKey = null;
BufferedReader br = null;
try {
//ファイルパスより、入力ファイルを開く
br = new BufferedReader(new FileReader(filePath));
//反転用文字を取得する
convertKey = br.readLine();
//反転用文字を返す
return convertKey;
} catch (IOException e) {
//反転用文字を取得できない場合、ログを出力する。
logger.info(LOG_CONVERT_KEY_READ_ERROR);
//スクリーンへメッセージを出力する。
System.out.println(CONSOLE_CONVERT_KEY_READ_ERROR);
throw e;
} finally {
//ファイルをクローズする
if (br != null) {
br.close();
}
}
}
}
发表评论
-
干掉你程序中的僵尸代码【转】
2012-12-22 11:05 927随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个 ... -
一个文本框搞定信用卡相关信息的输入[转]
2012-12-22 11:03 1089http://beforweb.com/node/134 ... -
android 开源 OCR 项目 及手写识别[转]
2012-12-11 18:21 57141)一个为Android平台,将识别由手机的相机拍摄的图 ... -
Android通过共享用户ID来实现多Activity进程共享【转】
2012-12-10 14:33 1074http://mypyg.iteye.com/blog/720 ... -
Android应用程序组件Content Provider的启动过程源代码分析【转】
2012-12-05 18:31 1091通过前面的学习,我们知道在Android系统中,Cont ... -
理解android上的安全性【转】
2012-12-03 18:08 855开发 Android 应用程序时,必须处理很多与安全性相关的方 ... -
Android 安全机制概述 Permission【转】
2012-12-03 18:07 11201 Android 安全机制概述 Android 是一个权限分 ... -
Android学习笔记之一谁动了我的接口附checkPermission流程(Dean)[转]
2012-12-03 18:06 18053前段时间接到一个有趣的需求!我们实现的某某功能的手机对外提供了 ... -
SL4A 之实现原理解析【转】
2012-10-23 23:52 1249关于SL4A的简介和在Android系统的安装及使用,请参 ... -
百度地图API之根据经纬度查询地址信息(Android)[转]
2012-06-16 00:15 19741http://blog.csdn.net/lyq8479/ar ... -
百度地图的手动定位和自动定位[转]
2012-06-15 23:24 3399http://aokunsang.iteye.com/b ... -
如何编程实现开启或关闭GPS?
2012-06-09 22:14 1092来自 手机应用中最酷的可能就是位置服务相关的了, ... -
Android软键盘的隐藏显示研究[转]
2012-05-25 16:30 1389Android是一个针对触摸屏专门设计的操作系统,当点 ... -
15 个变量和方法命名的最佳实践[转]
2012-02-27 11:44 99115 个变量和方法命名的最佳实践 在每个代码范围内使用足够短 ... -
iPhone Android Web开发(概要)
2012-01-19 15:15 1034一、 前端使用技术 JavaScript、 jQuer ... -
移动 电信 联通 APN cmwap cmnet ctwap ctnet 3gwap uniwap 3gnet uninet设置[转]
2011-11-23 14:35 2720APN(Access Point Name),即“接入 ... -
Android Http CMWAP联网获取实例【转】
2011-10-24 13:24 1372上午的时候原本想通过改变切入点的方式来实现cmwap,但是我们 ... -
监听ListView滚动到最底部【转】
2011-09-13 10:27 5830监听ListView的滚动可以用两个东西: ListV ... -
Android蓝牙开发浅谈【转】
2011-09-07 14:20 1511转自:http://www.eoeandroid.co ... -
修改Android模拟器的HOST
2011-06-03 11:08 4180C:\WINDOWS\system32\drivers ...
相关推荐
主要为大家详细介绍了java使用异或方式对文件进行加密解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
class XORTest { public static void main(String args[]){ char a1='欢',a2='迎',a3='下',a4='载'; char secret='8'; a1=(char)(a1^secret); a2=(char)(a2^secret); a3=(char)(a3^secret);...
利用异或加密,但只加密文件的第一个字节,这样子加密速度大大提升,但是不适合加密纯文本的文件,原因可以自己试一试。
Example.java异或运算(简单的加密,解密) PrintErrorAndDebug.java输出错误信息与调试信息 test.java实现两个变量的互换(不借助第3个变量)
主要介绍了Java使用异或运算实现简单的加密解密算法实例代码,具有一定借鉴价值,需要的朋友可以参考下。
主要介绍了Java中使用异或运算符实现加密字符串,本文直接给出实现代码,以及运算结果加密实例,需要的朋友可以参考下
主要介绍了使用异或实现变量互换和异或加密解密示例,需要的朋友可以参考下
使用异或位运算实现加密解密比aes算法更快,但安全性有待思考。为什么基本上使用md5对用户密码加密?因为md5算法是不可逆的:对加密结果不能进行解密。任意长度的数据,算出的md5值长度都是固定的。部分参考uikoo9...
对每个字节进行异或操作,异或的常量为根据key算出的pi的小数部分的指定长度的某个值(根据key的位数,如果key为三位数,那么就去10^3个pi的小数位数为异或常量的取值),再根据key来决定从这个数组哪个位置来取出...
3DES加密、java中常用加密方法介绍、异或加密
Java异或 加密 和 解密方法,很经典的,绝对有所帮做。
主要介绍了Java异或技操作给任意的文件加密原理及使用详解,具有一定借鉴价值,需要的朋友可以参考下。
主要介绍了java异或加密算法,有需要的朋友可以参考一下
异或加密,java实现,有选项框,要加密文档时,改变encrypt里面的文件路径
XOREncryption, 几种语言的异或加密实现 异或加密各种语言中的XOR加密/解密的简单实现,包括:C#C++DartF# 由 pawelizycki走。[Java (Android Compatible)] ( Java ( 兼容 Android )/XOREnc
异或加密解密算法 利用java写的,里面包含三个类,结构清晰,适用于初学者
java代码实现各种加密算法:AES加密解密,RAS加密解密,DES加密解密,MD5加密,Base64加密解密,异或加密解密
包括java自定义加密解密实例,异或加密解密实例,AES加密解密,DES加密解密 对文件加密建议使用DES方式 技术学习交流:635278789
主要介绍了Java编程实现对十六进制字符串异或运算代码示例,简述了异或运算以及具体实例,具有一定借鉴价值,需要的朋友可以参考下。
一个用C#写的加密/解密程序。注释很详细,很实用,捎作改动就可以直接用在公司内部。经测试,暴力破解的机会很小很小。