C++
// g++ -lcrypto md5.cpp -o md5 などとしてコンパイル #include <iostream> #include <openssl/md5.h> int main(int argc, char *argv[]) { std::string dat = "Hello World!"; // MD5を取得するデータ unsigned char md5_result[MD5_DIGEST_LENGTH]; MD5((unsigned char*) dat.c_str(), dat.length(), md5_result); for(int i = 0; i < MD5_DIGEST_LENGTH; i++) std::cout << std::hex << (unsigned int) md5_result[i]; std::cout << std::endl; return 0; }
C++ (ファイル入力バージョン)
// g++ -lcrypto md5.cpp -o md5 などとしてコンパイル #include <iostream> #include <fstream> #include <openssl/md5.h> int main(int argc, char *argv[]) { std::string filename = "./data_file_name"; // MD5を取得したいファイル名 std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary); if (!ifs){ std::cout << "ファイルが見つかりませんでした" << std::endl; return 1; } ifs.seekg(0, std::ios::end); long long int dat_size = ifs.tellg(); ifs.seekg(0); char *dat = new char[dat_size]; ifs.read(dat, dat_size); unsigned char md5_result[MD5_DIGEST_LENGTH]; MD5((unsigned char*) dat, dat_size, md5_result); for(int i = 0; i < MD5_DIGEST_LENGTH; i++) std::cout << std::hex << (unsigned int) md5_result[i]; std::cout << std::endl; delete[] dat; ifs.close(); return 0; }
Ruby
require "digest/md5" dat = "Hello World!" # MD5を取得するデータ puts(Digest::MD5.hexdigest(dat))
Ruby (ファイル入力バージョン)
require "digest/md5" filename = "./data_file_name" # MD5を取得したいファイル名 dat = File.read(filename) puts(Digest::MD5.hexdigest(dat))
Crystal
require "digest" dat = "Hello World!" # MD5を取得するデータ puts(Digest::MD5.hexdigest(dat))
Crystal (ファイル入力バージョン)
require "digest" filename = "./data_file_name" # MD5を取得したいファイル名 dat = File.read(filename) puts(Digest::MD5.hexdigest(dat))
Rust
// https://crates.io/crates/md5 を使用した例 fn main() { let dat: &str = "Hello World!"; // MD5を取得するデータ println!("{}", format!("{:x}", md5::compute(&dat))); }
Rust (ファイル入力バージョン)
// https://crates.io/crates/md5 を使用した例 use std::io::prelude::*; fn main() { let filename: &str = "./data_file_name"; // MD5を取得したいファイル名 let mut f = std::fs::File::open(filename).expect("ファイルが見つかりませんでした"); let mut dat = Vec::new(); let _ = f.read_to_end(&mut dat).expect("ファイルの読み込みで問題が発生しました"); println!("{}", format!("{:x}", md5::compute(&dat))); }
Python3
import hashlib dat = b'Hello World!' # MD5を取得するデータ print(hashlib.md5(dat).hexdigest())
Python3 (ファイル入力バージョン)
import hashlib filename = "./data_file_name" # MD5を取得したいファイル名 dat = open(filename, "rb").read() print(hashlib.md5(dat).hexdigest())
Node.js
'use strict' const dat = "Hello World!"; // MD5を取得するデータ console.log( require("crypto").createHash("md5").update(dat, "binary").digest("hex") );
Node.js (ファイル入力バージョン)
'use strict' const filename = "./data_file_name" // MD5を取得したいファイル名 require("fs").readFile( filename, "binary", (err, dat) => { console.log( require("crypto").createHash("md5").update(dat, "binary").digest("hex") ); } );
C#
using System.Security.Cryptography; using System.Text; String dat = "Hello World!"; // MD5を取得するデータ byte[] dat_byte = Encoding.GetEncoding("UTF-8").GetBytes(dat); MD5 md5 = MD5.Create(); byte[] md5_result = md5.ComputeHash(dat_byte); for (int i=0; i < md5_result.Length; i++) { Console.Write(md5_result[i].ToString("x2")); } Console.WriteLine("");
C# (ファイル入力バージョン)
using System.Security.Cryptography; using System.Text; String filename = "./data_file_name"; // MD5を取得したいファイル名 byte[] dat_byte = File.ReadAllBytes(filename); MD5 md5 = MD5.Create(); byte[] md5_result = md5.ComputeHash(dat_byte); for (int i=0; i < md5_result.Length; i++) { Console.Write(md5_result[i].ToString("x2")); } Console.WriteLine("");