*Single password on any sites = Unsafe

The source code of the program of mine is only in 1 file and show below.


[code language=”java” firstline=”1″ highlight=”34-35, 49, 53, 61, 64-67, 76, 84″]
package com.example.sha1md5demo;

import android.app.Activity;
import android.content.ClipboardManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MainActivity extends Activity implements OnClickListener{

private Button mSha1Button;
private Button mMd5Button;
private EditText mInputEdit;
private TextView mShowText;

protected void onCreate(Bundle savedInstanceState) {

mSha1Button = (Button)findViewById(R.id.main_sha1_button);
mMd5Button = (Button)findViewById(R.id.main_md5_button);
mInputEdit = (EditText)findViewById(R.id.main_input_edittext);
mShowText = (TextView)findViewById(R.id.main_show_encrypt_textview);


public void onClick(View v) {
// TODO Auto-generated method stub

int btnClick = v.getId();
String text = null;

String source = mInputEdit.getText().toString();

switch (btnClick) {
case R.id.main_sha1_button:
text = getHash(source, "SHA-1");

case R.id.main_md5_button:
text = getHash(source, "MD5");


//Show on screen

//Keep to clipboard
ClipboardManager myClipboard;
myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
android.content.ClipData myClip = android.content.ClipData.newPlainText("text", text.toLowerCase());

Toast.makeText(getApplicationContext(), "Result copied to clipboard.",

public String getHash(String stringToHash, String algorithm) {
MessageDigest digest = null;
try {
digest = MessageDigest.getInstance(algorithm);
} catch (NoSuchAlgorithmException e1) {
// TODO Auto-generated catch block
return "Unsupport algorithm.";

byte[] result = null;
try {
result = digest.digest(stringToHash.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
return "Unsupport language encoder.";

//Convert bytes to string
StringBuilder sb = new StringBuilder();
for (byte b : result) {
sb.append(String.format("%02X", b));
String mEncText = sb.toString();

return mEncText;

The important part of the program is highlighted as follows.

– Line 34 and 35 for support when you click at SHA1 or MD5 button.

– Line 49 send parameter to “gethash” for request result from SHA1 algorithm.

– Line 53 send parameter to “gethash” for request result from MD5 algorithm.

– Line 61 show the result on the screen.

– Line 64-67 for putting the result in the clipboard

– Line 76 call method of class “java.security.MessageDigest” for selected algorithm

– Line 84 process the method “digest” for result of Hash

ส่วนที่สำคัญของโปรแกรมข้างบนที่ถูกเน้นสีไว้ มีดังต่อไปนี้

บรรทัดที่ 34 และ 35 รองรับการกดคลิ๊กเลือกปุ่ม SHA1 หรือ MD5

บรรทัดที่ 49 ส่งพารามิเตอร์ไปที่ฟังก์ชั่น “gethash” เพื่อหาผลลัพธ์ด้วยอัลกอริทึ่ม SHA1

บรรทัดที่ 53 ส่งพารามิเตอร์ไปที่ฟังก์ชั่น “gethash” เพื่อหาผลลัพธ์ด้วยอัลกอริทึ่ม MD5

บรรทัดที่ 61 แสดงผลลัพธ์บนหน้าจอ

บรรทัดที่ 64-67 เพื่อเก็บผลลัพธ์ที่ได้ลงใน clipboard

บรรทัดที่ 76 เรียกใช้ method จากคลาส  “java.security.MessageDigest” ให้อัลกอริทีม ที่เลือกใช้

บรรทัดที่ 84 ดำเนินกระบวนการของ method “digest” เพื่อหาผลลัพธ์จาก hash


Hope you will not use the single password for all accounts on the internet anymore. You may keep your all password for all website in the program that I’m posting in “Keep your secrets with yours“.

หวังว่าคุณคงไม่ใช่หมายเลขเพียงชุดเดียว เป็นรหัสผ่านเข้าสู่บัญชีต่างๆบน Internet อีกต่อไปนะครับ ซึ่งคุณสามารถเก็บรหัสผ่านของเว๊บไซท์ต่างๆของคุณไว้ในโปรแกรมที่ผมกำลังเขียนบทความอยู่ที่ “Keep your secrets with yours“นะครับ


Good luck…





Leave a Reply

Your email address will not be published. Required fields are marked *