📄 notarypublic.java
字号:
package bingo.game;import java.security.*;import bingo.shared.*;class NotaryPublic { private PrivateKey priv = null; private PublicKey pub = null; NotaryPublic() { KeyPair pair = null; try { KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA"); keyGen.initialize(1024, new SecureRandom()); pair = keyGen.generateKeyPair(); } catch (Exception e) { ErrorMessages.error("Cannot sign cards. Continuing anyway."); } priv = pair.getPrivate(); pub = pair.getPublic(); } void signTheCard(Card c, int gameNumber) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException { Signature dsa = Signature.getInstance("SHA/DSA"); byte[] values = new byte[Card.SIZE*Card.SIZE+1]; dsa.initSign(priv); for (int i = 0; i < Card.SIZE; i++) for (int j = 0; j < Card.SIZE; j ++) values[Card.SIZE*i + j] = (byte)c.boardValues[i][j].number; values[values.length-1] = (byte)gameNumber; dsa.update(values); c.setSignature(dsa.sign()); } boolean verifyTheSignature(Card c, int gameNumber) { try { Signature dsa = Signature.getInstance("SHA/DSA"); byte[] values = new byte[Card.SIZE*Card.SIZE+1]; dsa.initVerify(pub); for (int i = 0; i < Card.SIZE; i ++) for (int j = 0; j < Card.SIZE; j ++) values[Card.SIZE*i + j] = (byte)c.boardValues[i][j].number; values[values.length-1] = (byte)gameNumber; dsa.update(values); return dsa.verify(c.getSignature()); } catch (Exception e) { return false; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -