<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSecurity%2FGeneral</id>
		<title>Java/Security/General - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSecurity%2FGeneral"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Security/General&amp;action=history"/>
		<updated>2026-04-21T19:00:06Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Security/General&amp;diff=7651&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Security/General&amp;diff=7651&amp;oldid=prev"/>
				<updated>2010-06-01T06:49:24Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:49, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Security/General&amp;diff=7650&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Security/General&amp;diff=7650&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Message Digest Test ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import java.io.ByteArrayOutputStream;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import javax.swing.ButtonGroup;&lt;br /&gt;
import javax.swing.JCheckBox;&lt;br /&gt;
import javax.swing.JFileChooser;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JMenu;&lt;br /&gt;
import javax.swing.JMenuBar;&lt;br /&gt;
import javax.swing.JMenuItem;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
public class MessageDigestTest {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new MessageDigestFrame();&lt;br /&gt;
    f.show();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MessageDigestFrame extends JFrame {&lt;br /&gt;
  public MessageDigestFrame() {&lt;br /&gt;
    setTitle(&amp;quot;MessageDigestTest&amp;quot;);&lt;br /&gt;
    setSize(400, 200);&lt;br /&gt;
    addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    ButtonGroup group = new ButtonGroup();&lt;br /&gt;
    ActionListener listener = new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent event) {&lt;br /&gt;
        JCheckBox b = (JCheckBox) event.getSource();&lt;br /&gt;
        setAlgorithm(b.getText());&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    addCheckBox(panel, &amp;quot;SHA-1&amp;quot;, group, true, listener);&lt;br /&gt;
    addCheckBox(panel, &amp;quot;MD5&amp;quot;, group, false, listener);&lt;br /&gt;
    Container contentPane = getContentPane();&lt;br /&gt;
    contentPane.add(panel, &amp;quot;North&amp;quot;);&lt;br /&gt;
    contentPane.add(new JScrollPane(message), &amp;quot;Center&amp;quot;);&lt;br /&gt;
    contentPane.add(digest, &amp;quot;South&amp;quot;);&lt;br /&gt;
    digest.setFont(new Font(&amp;quot;Monospaced&amp;quot;, Font.PLAIN, 12));&lt;br /&gt;
    setAlgorithm(&amp;quot;SHA-1&amp;quot;);&lt;br /&gt;
    JMenuBar menuBar = new JMenuBar();&lt;br /&gt;
    JMenu menu = new JMenu(&amp;quot;File&amp;quot;);&lt;br /&gt;
    JMenuItem fileDigestItem = new JMenuItem(&amp;quot;File digest&amp;quot;);&lt;br /&gt;
    fileDigestItem.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent event) {&lt;br /&gt;
        loadFile();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    menu.add(fileDigestItem);&lt;br /&gt;
    JMenuItem textDigestItem = new JMenuItem(&amp;quot;Text area digest&amp;quot;);&lt;br /&gt;
    textDigestItem.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent event) {&lt;br /&gt;
        String m = message.getText();&lt;br /&gt;
        computeDigest(m.getBytes());&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    menu.add(textDigestItem);&lt;br /&gt;
    menuBar.add(menu);&lt;br /&gt;
    setJMenuBar(menuBar);&lt;br /&gt;
  }&lt;br /&gt;
  public void addCheckBox(Container c, String name, ButtonGroup g,&lt;br /&gt;
      boolean selected, ActionListener listener) {&lt;br /&gt;
    JCheckBox b = new JCheckBox(name, selected);&lt;br /&gt;
    c.add(b);&lt;br /&gt;
    g.add(b);&lt;br /&gt;
    b.addActionListener(listener);&lt;br /&gt;
  }&lt;br /&gt;
  public void setAlgorithm(String alg) {&lt;br /&gt;
    try {&lt;br /&gt;
      currentAlgorithm = MessageDigest.getInstance(alg);&lt;br /&gt;
      digest.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
    } catch (NoSuchAlgorithmException e) {&lt;br /&gt;
      digest.setText(&amp;quot;&amp;quot; + e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void loadFile() {&lt;br /&gt;
    JFileChooser chooser = new JFileChooser();&lt;br /&gt;
    chooser.setCurrentDirectory(new File(&amp;quot;.&amp;quot;));&lt;br /&gt;
    int r = chooser.showOpenDialog(this);&lt;br /&gt;
    if (r == JFileChooser.APPROVE_OPTION) {&lt;br /&gt;
      String name = chooser.getSelectedFile().getAbsolutePath();&lt;br /&gt;
      computeDigest(loadBytes(name));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public byte[] loadBytes(String name) {&lt;br /&gt;
    FileInputStream in = null;&lt;br /&gt;
    try {&lt;br /&gt;
      in = new FileInputStream(name);&lt;br /&gt;
      ByteArrayOutputStream buffer = new ByteArrayOutputStream();&lt;br /&gt;
      int ch;&lt;br /&gt;
      while ((ch = in.read()) != -1)&lt;br /&gt;
        buffer.write(ch);&lt;br /&gt;
      return buffer.toByteArray();&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
      if (in != null) {&lt;br /&gt;
        try {&lt;br /&gt;
          in.close();&lt;br /&gt;
        } catch (IOException e2) {&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void computeDigest(byte[] b) {&lt;br /&gt;
    currentAlgorithm.reset();&lt;br /&gt;
    currentAlgorithm.update(b);&lt;br /&gt;
    byte[] hash = currentAlgorithm.digest();&lt;br /&gt;
    String d = &amp;quot;&amp;quot;;&lt;br /&gt;
    for (int i = 0; i &amp;lt; hash.length; i++) {&lt;br /&gt;
      int v = hash[i] &amp;amp; 0xFF;&lt;br /&gt;
      if (v &amp;lt; 16)&lt;br /&gt;
        d += &amp;quot;0&amp;quot;;&lt;br /&gt;
      d += Integer.toString(v, 16).toUpperCase() + &amp;quot; &amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    digest.setText(d);&lt;br /&gt;
  }&lt;br /&gt;
  private JTextArea message = new JTextArea();&lt;br /&gt;
  private JTextField digest = new JTextField();&lt;br /&gt;
  private MessageDigest currentAlgorithm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>