-- sample of md5 -- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/md5.h> void printHex(unsigned char *hex, int length) { for (int i = 0; i < length; i++) printf("%02x", hex[i]); printf("/n"); } /** * @buffer not used. * @length not used. * @md5 output parameter. */ void standardCall(char *buffer, int length, unsigned char *md5) { char *buffer1 = (char *)"Hello"; char *buffer2 = (char *)" "; char *buffer3 = (char *)"World"; MD5_CTX ctx; MD5_Init(&ctx); MD5_Update(&ctx,buffer1,strlen(buffer1)); MD5_Update(&ctx,buffer2,strlen(buffer2)); MD5_Update(&ctx,buffer3,strlen(buffer3)); // int MD5_Final(unsigned char *md, MD5_CTX *c); MD5_Final(md5,&ctx); } /* * @buffer not used. * @length not used. * @md5 output parameter. */ void simpleCall(char *buffer, unsigned long length, unsigned char *md5) { char *buffer1 = (char *)"Hello World"; // unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md); MD5((const unsigned char *)buffer1,strlen(buffer1), md5); } int main(int argc, char* argv[]) { char * tmp = (char *)"Any String"; unsigned char *md51 = (unsigned char *)malloc(MD5_DIGEST_LENGTH); unsigned char *md52 = (unsigned char *)malloc(MD5_DIGEST_LENGTH); simpleCall(tmp,strlen(tmp),md51); standardCall(tmp,strlen(tmp),md52); printHex(md51,MD5_DIGEST_LENGTH); printHex(md52,MD5_DIGEST_LENGTH); } -- sample of sha -- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/sha.h> void printHex(unsigned char *hex, int length) { for (int i = 0; i < length; i++) printf("%02x", hex[i]); printf("/n"); } /** * @buffer not used. * @length not used. * @sha output parameter. */ void standardCall(char *buffer, int length, unsigned char *sha) { char *buffer1 = (char *)"Hello"; char *buffer2 = (char *)" "; char *buffer3 = (char *)"World"; SHA_CTX ctx; SHA_Init(&ctx); SHA_Update(&ctx,buffer1,strlen(buffer1)); SHA_Update(&ctx,buffer2,strlen(buffer2)); SHA_Update(&ctx,buffer3,strlen(buffer3)); // int SHA_Final(unsigned char *md, SHA_CTX *c); SHA_Final(sha,&ctx); } /* * @buffer not used. * @length not used. * @sha output parameter. */ void simpleCall(char *buffer, unsigned long length, unsigned char *sha) { char *buffer1 = (char *)"Hello World"; // unsigned char *SHA(const unsigned char *d, unsigned long n, unsigned char *md); SHA((const unsigned char *)buffer1,strlen(buffer1), sha); } int main(int argc, char* argv[]) { char * tmp = (char *)"Any String"; unsigned char *sha1 = (unsigned char *)malloc(SHA_DIGEST_LENGTH); unsigned char *sha2 = (unsigned char *)malloc(SHA_DIGEST_LENGTH); simpleCall(tmp,strlen(tmp),sha1); standardCall(tmp,strlen(tmp),sha2); printHex(sha1,SHA_DIGEST_LENGTH); printHex(sha2,SHA_DIGEST_LENGTH); } -- JDK 1.5 -- import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * This is a tool used to generate MD5 password for a user. * * * @author XXX * */ public class generatePassword { public static String formatHexString(byte[] b) { String result = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } result += hex.toUpperCase(); } return result; } public static void main(String[] args) { try { String password = new String("Hello World"); //MessageDigest md5 = MessageDigest.getInstance("SHA"); MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] md5Str = md5.digest(password.getBytes("GBK")); String passwordMD5 = formatHexString(md5Str); System.out.println(passwordMD5+",length="+passwordMD5.length()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }