记录一次偶然的JAVA学习
下午闲着无聊 用python写了个字典转MD5字典的脚本
import requests
import hashlib
def baopo(script):
print(u" 转化开始:")
str=open(script).read()
str_list=str.split('\n')
print(str_list)
filename = "result.txt"
f = open(filename,'w')
for i in str_list:
str1 = i
m = hashlib.md5() #创建md5对象
m.update(str1.encode("utf-8"))
m = m.hexdigest()
f.write(m + "\n")
print(u"转换结束!")
f.close()
baopo("1.txt")
然后我突发奇想,最近不是刚学JAVA吗,用JAVA实现以下吧,然后我就写了两个小时
看着没几句话,其实这是第二版,第一版我写了一个多小时,主要还是因为java的函数和模块知道的太少了,有些东西硬写的,还一直报错
import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
import java.util.*;
public class Str {
public static void main(String[] args) throws Exception{
FileInputStream fl = new FileInputStream("C:\\Users\\87\\Desktop\\java\\1.txt"); //设置文件流
Scanner sc = new Scanner(fl); //可以获取用户的输入,文件里的就可以获取
List <String>list =new ArrayList<String>(); //设置一个list 这里加了ArrayList<String> 要不然报错,这方面我也没研究,照着做了
while(sc.hasNextLine()) { //当有下一行时候 hasNextLine的作用
list.add(sc.nextLine()); //添加到list里
}
BufferedWriter out = new BufferedWriter(new FileWriter("result.txt")); //设置变量输出文件
for (String value : list) { //超级循环遍历
System.out.println(value);
String strmd = Str.Md5(value);
System.out.println(strmd);
out.write(strmd);
out.write('\n');
}
out.close();
System.out.println("success");
}
//以下是字符串转换为MD5的,太麻烦了直接扒别人的,真的难写
public static String Md5(String str1){
String reStr = null;
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] bytes = md5.digest(str1.getBytes());
StringBuffer stringBuffer = new StringBuffer();
for (byte b : bytes){
int bt = b&0xff;
if (bt < 16){
stringBuffer.append(0);
}
stringBuffer.append(Integer.toHexString(bt));
}
reStr = stringBuffer.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return reStr;
}
}
运行结果:
然后这是第一版,我都不知道我在写什么...............只能实现一行,第二行还没实现,一开始我拿python的思维去想,要把它split掉,结果试了半天不行
总结:虽然过程很艰难,但总的来说通过这次写java让我进步了很多,也学到了很多模块和函数,果然写脚本还得是python,然后JAVA还得继续学