メインエントリポイントは文字列を返すことができません。さらに、input
は宣言されていません。関数の名前をgenerate
に変更し、input
をパラメータとして変更することができます。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import static jdk.nashorn.tools.ShellFunctions.input;
public class Sha256hash
{
public static String generate(String input) throws NoSuchAlgorithmException
{
MessageDigest md = MessageDigest.getInstance("SHA1");
md.reset();
byte[] buffer = input.getBytes("UTF-8");
md.update(buffer);
byte[] digest = md.digest();
String hexStr = "";
for (int i = 0; i < digest.length; i++) {
hexStr += Integer.toString((digest[i] & 0xff) + 0x100, 16).substring(1);
}
return hexStr;
}
}
この例は、文字列example
を処理した結果としてc3499c2729730a7f807efb8676a92dcb6f8a3f8f
を返す私の作品:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Sha256hash
{
public static String generate(String input) throws NoSuchAlgorithmException, UnsupportedEncodingException
{
MessageDigest md = MessageDigest.getInstance("SHA1");
md.reset();
byte[] buffer = input.getBytes("UTF-8");
md.update(buffer);
byte[] digest = md.digest();
String hexStr = "";
for (int i = 0; i < digest.length; i++) {
hexStr += Integer.toString((digest[i] & 0xff) + 0x100, 16).substring(1);
}
return hexStr;
}
}
メイン:
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
public class Tester {
public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
String someText = "example";
System.out.println(Sha256hash.generate(someText));
}
}
を最後に、あなたが使用したい場合はエリオットが指摘したようにSHA-256 MessageDigest.getInstance("SHA1");
をMessageDigest.getInstance("SHA256")
に変更する必要があります。今はSHA-1を使用しています。またElliotが指摘したところでは、ループの効率を上げるためにStringBuilder
を使用するべきです。
なぜいけないのでしょうか?どうしたの? – SLaks
それは私に入力のエラーを与えます。それはシンボル –
を見つけることができません。あなたの投稿されたコードのどこでも 'input'が宣言されていないためです。また、 'SHA1'!=' SHA256'。 –