⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdsa.java

📁 a Big Java source Code Exemples
💻 JAVA
字号:
// Updates: 2004.03.23, 2003.06.13


import java.io.*;
import java.security.*;


/**
 * Signe un texte puis v閞ifie la signature. Les constantes CHEAT_TEXT et
 * CHEAT_SIGNATURE permettent de modifier respectivement le texte et la 
 * signature (apr鑣 l'op閞ation de signature) afin de s'assurer que toute
 * tentative de fraude soit d閠ect閑.
 * Note: Le message peut-阾re de longueur quelconque; il n'y a pas besoin de 
 * faire un hash avant d'appliquer le processus de signature.
 */
public class TestDSA {
  final static int KEY_SIZE = 1024;  // [512..1024]
  final static boolean CHEAT_TEXT = false;
  final static boolean CHEAT_SIGNATURE = false;
  final static String message = "Transfer $2000 to account S314542.0";


  public static void main(String args[]) {
    try {
      byte[] text = message.getBytes();
      System.out.println("\nGenerating a pair of DSA keys...");
      KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
      keyPairGen.initialize(KEY_SIZE, new SecureRandom());
      KeyPair kp = keyPairGen.generateKeyPair();      
      System.out.println("Signing the text...");
      Signature signature = Signature.getInstance("DSA");
      signature.initSign(kp.getPrivate());
      signature.update(text);
      byte[] sig = signature.sign();            
      
      if (CHEAT_TEXT) text[0]++; 
      if (CHEAT_SIGNATURE) sig[4]++; // changing sig[0] produces an exception
            
      System.out.println("\nVerifying the signature...");
      signature.initVerify(kp.getPublic());
      signature.update(text);
      boolean ok = signature.verify(sig);      
      System.out.println("Signature is " + (ok ? "OK" : "NOT OK") + " !\n");      
    }
    catch (Exception e) {
      System.out.println(e);
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -