�����:   ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½:




�������
��������
�����
�����


Java
- �������
- ������-�����
- ������
- �������
- �����������
- ������
- IDE
- ������� ��������
- �������

��������� Java
- ����
- �������
- ������
- WAP, WML � ��.

JavaScript
- ������-�����
- �������
- ������

���-���������
- HTML
- CSS
- SSI

�������� ��� ���
�������
�����
������
���������
���� :)




Rambler's Top100

Java: ������������� ������������ ��� ��������. �������� ����������� ������� ��� ���������� �������� ������� � �������������� ������������ ��������� �����

������� ������������ ��� ��������. �������� ����������� ������� ��� ���������� �������� ������� � �������������� ������������ ��������� �����

�����

������ ������ �� ����� �� ������������ � �������� ����������� (trusted) ������� ����������� ������ ������� � ��������� �������� �������. ��������� ������ �������� ������������ ����� � � ��� ��������������� ���� �� ������������� ����� ��������� ���������� ��������� ���������� MD5 with RSA/SHA1 with DSA ("RSA/DSA ���n key crypto system") �� ������� ������� � ������������ ��������� ������� �� ������� �������, ������� ����������� �� ����� ���� ����������� java �������� ��� ������� � ������ �� ������ �������. �������� �� �������� � ������� �� ������ ����������� ��� � ��������� ����� (���������� ��������� ������ "����������� ������" ������� �������� �������������� ��) �������� ������ ��������� ��������� �������� ���������� ��������� ��� �������� ������������� ��� ���������� �����, �������� ������, ��� ����� ������ ���������� ������������.

���� ���������, ��� ������ ����� ������� �������� �������� ��� �������� ������� �������� ���������� ������ jdk1.3 ������� ����� ������� � http://java.sun.com ��� ����������� ��� ������ � ������ ������������ � ���������� IE4 � ���� ��� NN4.75 � ����� ������� ������. ��� �������� �� ������� ����������� ������ � jdk1.3 ������� ������������ ����� ��������� ������������� �� ���� JDK1.1 � �������������� javakey. � ������ ������ �� ������� ��������� ���������� �������, �������� �������������� ������� � �������� ��� �������� ��������� ��� ������� �������, �� ���������� ���������� ��������, � �� ������ ������� ����������� -- ��������������, ��� �� �������� ��������� ������������ ��� ������ ������.

� ���� ������� ������ ������ � ��������������� ��������� �����?

-- c ������ �������� ������������: ���� �� ���� ���� ���������� ��������� ������� � ������ ��� �� ����� ������ ������������� �� � ������ ���� ��������� ������, ������� � ���������� ������������ ���������� ����������� �������, � �� ����������� �������� ������ ��� �������� �������, ������� ����� ����� ���������������� ��������� � ������ ������� ��� ��������� ������.

� ����������������� ������� � �������� ������ ������ ����� ��� ��������� ������� ���������� �����: ����������� �������� ���� � ��������� ����. ������ �� ��� ��������� ���, ��������� � ������� �������. ������ ��������� ����� �� ��������� ��� ��������� ��������������� ��������� ����. �������� ���� ����� ������������� � ������ ���������������� ����� ���������������� ����. ����� �������� ������������ ����������� ��� ������������� ������������ ����������� ������ �����, ����������� ��� ����������� ����������������� ������.

��� ������ ����� ������������ �������� ���� ����������, ����� ����������� ��������� ���, � ���������� ���������� ��� ����������� ��������������� ��������� ���� ��� ����������� ���������. �����, ����� ����������, �� ����� ������������ ���, ������ ��� ����� ������ �� ����� ������� � ���������� �����. ���� ���, ��� �������� ���������, �� ����� ����� ����������� ������������ ���.

����� ����, �������������� ����� ������������ ����������� ���������. ����������� ��������� ���� ����������� ����� ���� ����������� ��� �������� ���������, ����� ������� "����������" ���. ��� ��������� ����������� ������� ���������, ������� ���������� (��� ���-���� ���) ����� ���������, ��������� �������� ���� ����������� ��� �����������. ��� ����������, ��� ������������ ��� ������������� ��������� ��������� � ��� ��������� ������������ �� ���������� ���-����, ��� ��� ����������� -- ������������, ��� �������� ��������� ������, � ������� �������� ���� ������� �������. �������� ������������ ��������� ����������, � ����������� �� ����� ������������ �������� ���� �������.

��� ��� �������� ����� ���� ���������� ��� ����������� � �����������, � ������������ �����������: ������� ������������� ��������� ����� ����������� ��������� ������, � ����� ��������� ��� ����������� ��������� �������� ������ ����������. ���������� ������ ��������: �������������� ��������� � ������� ������������ ���������� �����, � ����� ��������� ������� � ������� ������ ��������� �����. ��� ���� ����������� ������������� � ������� ������������ ����������� ����������.

�������� ����� �������� � ���� "������������ ������", ������� �������� � ���� ������������� ������������ ��������� ����� (������ ��� ��� ������������) , ��������� �����, ������� ��������� ����� ��������� ���� ������, � ���������� �����. ����������� �������� ������ �������� �������� �����, � ����������� ��������� ������ -- ���������. ������ ��������� ���� ����� ��������� � ��������� �������. ���� ������, ��� ������� ������ keystore � ����� ������ �������� ���� ��� ��������� ����� ������������. � ��������� �������� ������ �������� ����������� �������� ������, � � ��������� ��������� -- ����������� ��������� ������.

�������� ������

�������� ��� �������� ������������ ��������� �� ������ �������� ������������ ��������� �����. �� ����� ���� -- ����� ���������� �������� ��� ��� �������� �������������, ���� �� ��������� trusted ������ -- ��� ����� �� ������� ���� ������ � ����� ��������� keystore � �������� �������� ��� ������ -- �������������� ������� ������� (���� �������� ��������� ���������) ���������� ������������ ��� �������������� ���� ������ ���������� � ����� keystore. � ���� ����� ����� � ����� ���������� ������������ -- ���� ���������� �������������� ������������ '�� �������' ��� ������� ����� �� astu.secna.ru/ -- ������ ��� ��������� ��� ������, ������ ����� ���������� ����������� �������� �������� ��������� � �������������� �������� ������ -- �������� �� ������� -- ��� ������� ���������, ������� ���������, ����� ��� ����������� ��������� ������� �����������, � ���� ������� ��������� ��� ������� ���� ���� �� ��� ����� ���� � ����������� ��������� ��� ������������� ��������� � ���������� ������ ����������� ��������. ����� ������, ����� �� ������ ���� ������ ����������� ��� ������, � ����� ���� ������ ����������� ������ � ���, ��������� �� ��������� ��������� ��������� ����������� -- ���� ��� ���� ������� ����������� ��� ����������� ��� �������� �� ������� �� � ���, �����, �������, ����������� ������������ ��� ��������.

��� �� �������� ��������� ������������ ������� �������� �������� VeriSign ��� Thawte, ����� �������� � �������� ����� �������� � ������� �������, �� ��� �� ����� �����������, � ���� ��� �����, ������, ��� ��� ��������� ��������� ����, � �� �������� �� �������� ����������� ��� ������� �������� � ������ ����� ������, ��� ����� ��� ���� ���� ������ �������.

���� �� �� ������ ���������� pkcs12, *.cer ��� ����������� � ������� �������� ����� ���������, ��������� �� �� � ������������ �������, ����������� ��������� �� ��� ����� ������ ����, ��������� ���������� ����������� ����� �� ���������� ����������� � ����������� ��������� � ���������� ���������������� �����������. ����� �������, �������� �������� ������ ������� ����� ���� - ��� ����������� ����������� �������� �������� ������������ ���������, ������ ������ ���������� ��� ����� ���������� ������ ������� ����������� ������.

�� �������� ��� ����� �� ��������� ��������� �������: ���������� ���� ����� ���������� ������ ��������� ��������� �������� ��� ����� ��������� �������� (����� ���� � �����, ��� ������ ��� ������ ��������� ��������� �����) ������� � ��������� ������, � ������� �� ���� ����� �� ����������. ����� ����������� � ������� �����, ���� �� ������������� �������� ���������� ����� ���������� ������ ������� � ���������, �� ������ ����� �� ������ ����������� �������� ��� ��������� �, ��������, ���������. � ����� �� ��� ������ ������ ���������� �������� ��� ����� ������������, ������ �� ��� ������ �����������. ���� ����� ������������ ������������ �������� � ����������, �������� ����� ���� �� ������� ��� ��������� ��������:

  • ����, ���������� ��� ����� ������ ����� ������� � �������
  • �� ������ ����� alias(���) ������� ����� ���� ������� ������ �������� (�� ����� ���� ��������� �� �������, �� ������ ����� ����� �������� ������ ��������)
  • ����, ���������� �������� �������� ������� ��� ������ (�����) � keystor'e ���������� �� �������, � ����������� ��� ��������� ������� ���������.
����������� ������, ����� ��������� � ������� ����� ��������� � ����������� ��� ����������� ������� -- � ����� alias (���) ����� ���������� ��� �������� ������, �� ����� ����� ��������� � ������������� ������ ������������ ���������� �������.

��� ���������� ����� ���������� ������ � ���� �������, ��� ��� ����������� ���������� ��������� ���������������� ��������, ����������� ��������. �� �������� ����� ����������� ������, ����� ���� ���� ����������� keystore ����� � ��������� ������� � ���� ������� �����, � ���� ��� ��� ������ �� ������� ������������, ��� ����������������, ������ ���� � � ���� �������� �������� ������ ������ ����� �����. ����� �� ������ ��������� �������� ���� �������, �� ������ ��� ������� ���������� ������, ������, ���������� ����� � ��������� ������� ������� ���� �������� �� ����� �������� ����� �� �������� ����������� �������, ��������� ��� ���������� ���� �� ������ �� ����������� ������ �������� ������� ��� ����������� �����������.

������ ����������

������� �������� � ����� ������� �� ���������� ����������� � ��� ������ ������ ���������� �������� �������:
  • �� ����� ������� web-�������, ������������� �� �������� �� ������ �� ���������� (��������� ��� ���������), � ������� ������� ���� ��� ������������ ��������� ���� (�������� �� �������, keystore), � ��� ������ �������.
  • ������, ����������� ��������� �������, ���������������� ��� �� ����� ��� �������� ������ ��� ������ ��������, � ������� � �� ���� ����������� (keystore) ���������� ��������� ���� ������� ��� ��� �������� �� ��������������.
  • ����� ������� ����������������� �������, �� ��� �������, ������ ��������� � ������� ������� �������� � ������� �� ������� ��� �� ��������, �� ��� ���������� �������� �������� ������� ����������������� �������.
  • ���� ������ �������� ��������, �� ������ ������� ���������� �������� ���������, ������������� �� ������ �������� ������� ��������� ������ ������� �������, ������ ��� � �������� ������ ������� ���������� � ��.
  • � ������, ���� �������� ������� ����� -- �������� ���������� ����������, ����� ���� ��� �������� � �������� ������� ��������� � �� � �������� � ��� �� �������� �� ������ ����.
���� ������� ���������� ��������� ������� ������� � ��������� �� �������� �� ��������, ����� ��������� �� ������ ������� ��������� ����� ��� ������� ������������ ����� � ��������� ��� ������� ��� �������� �� ������� �������. ��������, ��� �� �� ������ �������� ��������� � ����� �� ���������� ������ ����������� ��������� ����� ��� ������� -- ������ ��� ����� ��� ����������� ������ � ��������� �������� ������� �������, � ��������������, ������ ���������� ������ ����� ���� ��� ���������� ������������, ������� �������� ��������� �������� ������� ��� ��������� ����-���� ��� �� ������ �������. ���� ��������, ��� �����, �������� �� ������������ ������ ����� �� ������� � ������� �������� ������ ����������� ��������� ��� (�������) -- ����� ����� �������� ��������� ��� �� ��� �������� ��� �������� ����������, � ����� ������ ������ �������� �������� ����� �������� ������ ������ �� ��, � �����-�� ������ �������. ���� �� ���� ��������� �������� ����������� ������� �� ������ � ������� � ���������� ������ �� �����.

������ ������� � �������� ���������� keystore -- � ��������� �������� ���������� keystore �� ���������� ��������� ������ �� ��� ������� �� ���������� ������ ��� �� ������������ ��� ��� ���������� ����������� �������. ������� �������� ��������� ���������� �� ���������� �����, � ����������� ���������� ������ ������������ �������:

  • �� ������ ������� ��������� keystore ��� ������� � ������� "JKS"
  • ��� ��������� keystore ������ ���� �������� ��� ������� ��������� � ����������� ������������.
  • �������� �� ������� ������� �������� ���� ��������� ����� ����� �� java ����������, � ������ ������� ������������� ����������� ���������� ������������ � ������ �������� ����������������� ����������.
��������� �� �� ����� ��������� ��������� keystore � ������ ������ ����� �������� ��� ����� ��������� ��������� -- �� ����������� ����� ����� ����� ��� ������������ � ������������ ��� ���� �����. ����� ��� ����� � ������� jdk1.3 � ���������� JavaSoft\JRE\1.3.1_02\lib\security\cacerts ��� jdk1.3\jre\lib\security\cacerts � ��� �������� ������ ����� ����������� ��� �� ���� �. �� ��� �������� ����������� ���������� ���������� � ���� ��� ��������, � ����������� ����������� ���������� changeit ������� ������� ������� ��� ������ �����������, � ������ ����� ����� ��������� ��� ��� �������������� ��� ���� ������ � ��������. ������ ����� ������� ��������� ��� �� �� �����, � ��� ����� ���������� ���������� keystor'a:


������� 1. �������� ����������� keystore

��������� ��� ��� ����������� �� �����, ����� ������ �� �������� -delete ���������� ���� :


������� 2. �������� ������������

������� ����� �� ������� ����� ������ �� ���, ����� ���� �������� ������


������� 3. ����� �������

��� �������� �� ������� ������ �������� ��� keystore � alias'a -- ������ ����� ��������� ��� ���������� ��������� ��������:


������� 4. �������� �����������

��������� jdk1.3\bin > �������� ��� ����� � ��� ����� ������� �������. ����� �� ����� �� ��������� ������ ����� ����� ������� � ��������� ���������� ��� ��������������� � ������� *.cer -- ������������ � ��� ������� �� ������ ������� �������� ������� �������. ��� ����� ������� ���� ��� ���������� �����������, �������� �� ����� A:\certificate.cer � �� ���������� ��������� ������ ������ ������� ���������� ����:


������� 5. �������� ����� ��� ���������� �����������

������� � ���� A:\certificate.cer ����������� ��������� ����� ������ �����������, � ������� ����� ���� ���������� �� ������ ������� Windows. � ��������� ���������� ����, ����� ��� ��������� ��������� ������ �� ������ ��������� ���� ����� ����������� keystore, ���, ���� �� ������ ���������� � �������� ����� ������, (������ ������ ��������) ������ ������ ������ � ������������ ����������. ������, ����� � ��� ���� ��� ����������� ����������, ����� ���������� ��������������� � ��������� ���� ������� � �������� ��� ��������� ��� �������.

������ � �������, ������� ������ ������ ��������� ������:

  • �������� � ������� �������� ��� �������.
  • ��������������� ��� �������
  • ��������� �������� ������� ���������
  • �������� �������� � ������� ��� ��������
  • ������ ���� ���������� �������� ��� ������� � a:\\cacerts
�����������, ��� ����� ������ ����� ������ ���������� ��������, � ����� �� ��� ����� -- ��� ���� -- ������� ������������� � ��������� ���������� ������, � ����� �� ������, ��� ������� � HTML ������������ ��� ������� ����������� � ��� �� ���� �������������� �����: HTML -- ����� ��� �������:


<FORM name='sbm'> //������ ����� � ������� javascript ���������� ���
</FORM>           //������� �� ������ -- ��� �������� ��� �������� ��������
                  //������ InputStream'�

  <applet
  MAYSCRIPT="MAYSCRIPT" //������ ����������� ��� ���������� javascript'�
  codebase = ". "
  ARCHIVE  = "sign_applet.jar"
  code     = "sign_applet.class"
  name     = "TestApplet"
  width    = "600"
  height   = "450"
  hspace   = "0"
  vspace   = "0"
  align    = "middle"
>
<param name = "addressFrom"  value =
"http://naprimer. ru/test. txt">      //�������� -- ����� ����� ��� �������
<param name = "addressTo"  value =
"http://naprimer. ru/yuorServlet"> //�������� --  ����� ����������-��������

� ��� ������:

import java.awt.*;
import java.awt. event.*;
import java.util.*;
import java.lang. Byte;
import java.applet.*;
import java.io.*;
import java.net.*;
                     //���� ������� ��� �������� �������
import java.security.spec.*;
import java.security.cert.*;
import java.security.*;
import java.security.interfaces.*;
import java.math.*;
                     //���� ������� ��� JSObject
import netscape.javascript.*;


public class sign_applet extends Applet {

  KeyStore ks;
  InputStream is = null;
  DataInputStream dis = null;
  boolean isStandalone = false;
  byte b[]=null;
  TextArea ar;
  TextField tf;
  Button bt;
  String func = "func";
  String addressFrom = "";
  String addressTo = "";
  String buttonTxt ="send your signature to other side";


    public void init()
{
//� ������� �������� �������� ���������
//��������� � �������� ������
//� ������� ���������� �������� �������
    setSize(600, 450);
    setBackground(Color.white);
//��� ������ ��������� �������
    ar = new TextArea(25, 80);
//��� ����� ��������������
    ar. setEditable(false);
    ar. setBackground(Color.white);
//��� �������� ������
    tf= new TextField(40);
//��� ������� ��������� ������� � ��������
    bt = new Button(buttonTxt);
    bt. setBackground(Color.white);
//������� �������� �������� � ��������� ������...
    try{
        addressFrom = getParameter("addressFrom", "address not found");
        addressTo = getParameter("addressTo", "address not found");
        }
        catch(Exception e) {}
    }


   public void start()
    {
    add(ar);//��������� ������ � ���� � ������
    add(tf);
    add(bt);
    try {

//��������� ������� keystore �� �������
                    ks =  KeyStore.getInstance("JKS", "SUN");

//� ����� FileInputStream �� ��� keystore �� �������
                    is = new FileInputStream("a:\\cacerts");

//���������� �� ������ -- �� ������������� ������
                    URL url = new URL(addressFrom);

//��� �� ���� -- ��������� URLConnection
                    URLConnection urlConn = url.openConnection();

//�� ���� �������� InputStream � ������������ ��� � BufferedInputStream
                    BufferedInputStream bf =
                    new BufferedInputStream((InputStream)
		    urlConn.getInputStream() );

// ByteArrayOutputStream �����������
// ��� ���������� ��������� ������� b[]
                    ByteArrayOutputStream bas =
		    new ByteArrayOutputStream();

//������������� �������
                    int bit;

//���� ����� �� ����, ������ �� ���� � ����� ����� � bas
                    while((bit = bf.read() )  != -1)
	            {
                          bas.write(bit);
                    }

//����� ����, ��� ��� � ��� ���� -- ������ � ������ ����
                    b = bas.toByteArray();

//�� ������� ������ ���� b[]
//������� ������ ������� ��� ���������
 String a = new String(bas.toString("UTF-8") );

//������ ��������� ���������� ����������� ������� ���� ��� ������� ���
//��� ������� jdk1.3 ����������� ����������� RU � ���� -- �������. ���������
//�� ������� ����� ������ ���� UTF-8 -- ��� ����� ��������� ���������� ������
//������ �. �������� '������� ����� � �� ������...'

                    writer (a+"\r\n");
           }
           catch(Exception e) {e.toString();}
    }


     public void writer(String str)
       //������ ��������� ������ � TextArea
     {
        ar.append(str+"\r\n");
     }

// ����� ������� ��������� ������� � �������� ��
// ������ �� ������� ������ -- ����� ����������

     public boolean action(Event evt, Object obj)
     {
       String tx ="";
       if(buttonTxt.equals(obj) )
       {
//�������� ������ �������
         tx = tf.getText();

//���������
         String sign = sign(b, tx);

//� �������� �� �� ������ javascript'��
        doScript(sign, new String(b) );
       }
       return true;
    }

//����� ����������. �� ����� ������ ���������� �������� � ���� �������
// ���� b[] � ������ ������� ������� �� ���� � ���� �������,
//�� ������ �������� ������ �������

     public String sign(byte[]b, String client_mess)
  {
    String signdoc = "";
      try
    {

//is -- ����� �� ����� "a:\\cacerts",
// client_mess. toCharArray() -��� ������ =
 '1', '2', '3', '4', '5', '6';
      ks. load(is, client_mess.toCharArray() );

//Enumeration �������� �����(�����es) �� keystore �������
//� ����� ������ -- ���� ��� 'tst'
      Enumeration aliaslist = ks.aliases();

//RSAPrivateKey -- ���� ��� ������� ����� ������ ���� � keystore
//������� �������� ����� � �������� �������� ������
//�������� �������� �� ��� DSAPrivateKey -��� ������� ���� SHA1withDSA
//�� ���������,  �� �������� � ��� RSAPrivateKey -- ��� MD5withRSA
//������ ������ java.lang.ClassCastException:
//sun.security.provider.DSAPrivateKey

      RSAPrivateKey priv = (RSAPrivateKey) ks.getKey
      (aliaslist.nextElement().toString() , client_mess.toCharArray() );

//������ Signature -- ������������ �������� �������
      Signature sign = Signature.getInstance("MD5withRSA");

//� ������ priv -- ���������� ������
      sign.initSign(priv);

//� ������� ���� b[]
      sign.update(b);

//byte[] realSig -- �� � ���� �� ���� �������� ������� ��� ������� b[]
//��� ������� ������� �����, ������ � ������� �������� ������ ����
// 2  20  81  6  120  -122  60  -106  102  14  60  42  -35  51  105
      byte[] realSig = sign.sign();

//������� ��������, ������ �� ����� �������� ��� �������� �� ������
//� �����, �������� ��� ����� ���� ������ ���� ��� -- ������ �������
//��������� ��������� ������������� �������
//�� �� ���� ������� -- ������� ����� ��������� �� � ������ -
//�� ������� �������� -- ���� �������� ������� ��� ���������. . .

      for(int z=0; z<realSig.length; z++)
        signdoc += "  " + Byte.toString(realSig[z]);

      return signdoc;
    }catch(Exception e)
      {
        System. out. println(e.toString() );
        return "false";
      }
  }

//����� �������� ������ ������� � ��������� �� ������ �������
//�� ����� �������� ������ ������� � ������������ ������ � ���������
//JSObject � HTML ����� 'sbm' �������� �� �������...

      void doScript(String sig, String doc) {
//���� ��� ��������� �������� ���������, �� ������ ������ ���������...
   try{
         JSObject win = (JSObject)  JSObject.getWindow(this);
         win.eval("f = document. forms['sbm']");
         win.eval("f.method = 'post'");
         win.eval("f.action =  '"+ addressTo +"'");

         win.eval("inputTag = document.createElement('input') ");
         win.eval("inputTag.name = 'doc'");
         win.eval("inputTag.type = 'text'");
         win.eval("inputTag.value = '"+doc+"'");
         win.eval("f.appendChild(inputTag) ");

         win.eval("inputTag = document. createElement('input') ");
         win.eval("inputTag.name = 'sig'");
         win.eval("inputTag.type = 'text'");
         win.eval("inputTag.value = '"+sig+"'");
         win.eval("f.appendChild(inputTag) ");

         win.eval("f.submit() ");
         win = null;
      } catch(Exception t) {}
  }

//������� ����� ��������� ���������� �� HTML

     public String getParameter(String key,  String def)  {
    return isStandalone ? System. getProperty(key,  def)  :
      (getParameter(key)  != null ? getParameter(key) : def);
  }

      public void stop()
      { }

      public void destroy()
      { }

      public String getAppletInfo()
      {return ""; }


}

�� ��������, ��� ����� ��������� ������ ������ ���� ������� �������� (�������� ��� trusted) ���������� keystore ��������������� �������. � ���������� � ��� ��������� ��������� ������, ��� ���������� TextArea, �����������, ����� �������� �� ������ ����� �� �������:


������� 6. �������� ������

��������� �����

�� ���� ����� �������� �������� ������ � ����� � �������� �������� �� ������� ����������� ���������: ��� � �������, ��� � �� ������� ������� �������� ������ �������� ���������� ���������� -- �������� ����� ��������� ��������� ������ ��������� ������� ������ ������ ������� -- ��� ������� ��� ������ �� ����� �������� ����������� ����� ��������� ����� ������� ������ ��������������, ������, � �������� ���������� �������� ����� �������� -- ������� �� ����������� ����������� �������� ������������� ������.
    ������ ��� ����� ������� ������� �� ����� ������������� ������:
  • ��� �� ������������ ������������� ������� � ������ �� �������
  • ����������� �� request'a ���������� ������������ ���� �� �������
  • ���������� � �� �� ���������� ������� ������� ��������������� �������
  • �� ��������� ����� � ������ �������-�������� �������� ��������� �� �����������
  • ���� �������� ������������ -- ������� �������� � ������� � ��

import javax.servlet.*;
import javax.servlet. http.*;
import java.io.*;
import java.util.*;

//�������� ������� ��� ������ oracle � Blob
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.*;

//������ ��� ����������� �������
import sun.security.pkcs.PKCS10;
import java.security.spec.*;
import java.security.cert.*;
import java.security.*;
import java.security.interfaces.*;


public class verify_sign extends HttpServlet
{
  Connection conn;
  Blob keystore;
  private static final String CONTENT_TYPE =
   "text/html;charset=Windows-1251";
  HttpSession session;

  public void init(ServletConfig config)
    throws ServletException
  {
    super.init(config);
  }

  public void putsession(HttpSession ses) {
  session = ses;
  }

//  ���������  request'a
  public void service(HttpServletRequest
  request, HttpServletResponse response)
  throws ServletException,  IOException
  {
    String er = "";
    String sig = "";
    String doc = "";
    boolean verifies;
    try
    {


//  ��������� �������� ������� � ��������� �� request'a
    byte[] sign_from_client = new byte[1024];
    sig = request.getParameter("sig");

//  StringTokenizer ����� ��� ����������
//  ������ �� ��������� � ���������� ������
//  ������� ���������� � ������ sign_from_client[i]
    StringTokenizer stoken = new StringTokenizer(sig, "  ");
    int i = 0;
    while(stoken.hasMoreTokens() )
    {
      sign_from_client[i] = Byte.parseByte(stoken. nextToken() );
      i++;
    }
     doc = request. getParameter("doc");

//�������������� keystore
      KeyStore ks = KeyStore. getInstance("JKS", "SUN");

//�������� connection � �� �� ������ --
//��������������, ��� �� ��� ��������
//� ������ � ������ ����������� �������
      conn = (Connection)  session.getValue("connection");

//�������� ����� ������� �� connection --
//���������� ��, ��� ����� �������
// ��������� � ��� alias � keystore...
      String login = conn.getMetaData().getUserName();

//����������� keystore ������� �� ��
      Statement stmt = conn.createStatement();
      ResultSet rset = stmt.executeQuery(
       "SELECT KEY_STORE FROM users WHERE
       LOGIN_NAME = '"+login.toUpperCase() +"'");
      rset. next();

//�������� �� �� BLOB -- ����� keystore
      BLOB blob = ((OracleResultSet) rset).
       getBLOB("KEY_STORE");

//� �� ���� -- InputStream
      InputStream is1 = blob.getBinaryStream();

//�������� ������ ������� �� request'a
//��������� ���� ����� ��� ��� �����������
      char[] pass = request.getParameter("password").toCharArray();

//��������� ��������� keystore
      ks.load(is1,  pass);

//�� ������ ������� �� keystore
//�������� ��� ���������� -- ��������� ����
      java.security.cert.Certificate certif =
      (java.security.cert.Certificate)
       ks.getCertificate(login);

//������� ������ sign ���� Signature
      Signature sign = Signature.getInstance("MD5withRSA");

//� �������������� �������� �������
      sign. initVerify(certif);
      sign. update(doc.getBytes() );
      verifies = sign.verify(sign_from_client);
      stmt.close();
    }
    catch(Exception e)
    {
       er = "Error: " + e. toString();
       verifies = false;
    }

//������ �����-�� ����� �������...

    response. setContentType(CONTENT_TYPE);
    PrintWriter out = response. getWriter();
    out. println("<html>");
    out. println("<head><title>
        </title></head>");
    out. println("<body>");
    out. println("<p>Sign is " + verifies + er+"  "+
        doc+"**** "+sig+"</p>");
    out. println("</body></html>");
  }

//����������� ������� ������
  public void destroy()
  {
  }
}

��������� �� ������� � ������� ��� ������� �� ���������� ������ � �� � ������� ������������������ ������ -- ������ �����, ��� ����� ��������� ����������� ���� ���������� ��������� �� ���������� ������ � ��. �� �������� �����, ��������� �������� ������, � ���� ���������������� �� �������������� �������, �� �� ����� ������ � ������ ������:

//  sig   -- ������� ������� � ���� ������
//  doc   -- ���������� �������� � ������� ��� �� ��
//  login -- ����� ������� � keystore
//  pass  -- ������ ����� ������

       public boolean check(String sig, String doc,
           String login, String pass)
      {
        boolean verifies = false;
        byte[] sign_from_client = new byte[1024];

// StringTokenizer stoken ����� �
// ������ ����� �� ��������� �� ������ ����,
// � ������ int'��
        StringTokenizer stoken = new StringTokenizer(sig, "  ");
        int q=0;
        while(stoken.hasMoreTokens() )
        {
          sign_from_client[q] = Byte.parseByte
              (stoken. nextToken() );
          q++;
        }

       int i=0;
       char [] password = pass. toCharArray();
      try{
// � ������ � ����� �� FileInputStream
// is1 ��� ����� ����� ��������
// �� InputStream �� BLOB'a ������������� ��

        FileInputStream is1 = new FileInputStream("a:\\cacerts");
        ks =  KeyStore. getInstance("JKS", "SUN");
        ks. load(is1, password);
        java.security. cert. Certificate certif =
         (java.security. cert. Certificate)  ks. getCertificate(login);
        Signature sign = Signature. getInstance("SHA1withDSA");
        sign. initVerify(certif);
        sign. update(doc. getBytes() );
        verifies = sign. verify(sign_from_client);
       }catch(Exception e)
                   {System. out. println(e. toString() );}
        return verifies;
   }

����������

������������ ����� ������ �� ����������, �� ������ �������������� ��� ������������� jdk1.3. ����� ��������� �� ����������� �� ��� ������ �������� ��, ��� �� ������� ������� ����������� ����� keystore �������, � ��� ������, ��� � �������� ���������� ����������� �������������� ������������� ��� � ������ ������ �� ��� ����� ����������. ������� ������ ��, ��� ��� ��������� ���������� ������ keystor'a ������� ������� �� ������ ����� ���������� ������. ������������� ����������� � ������� *.cer � �������� ����� ��������� �������� � ���� ����������.

�, �������, � �������� ������� ����� ����� �������� ����� ���������� ����������� ��������� ��������������� ��������� ������� openSSL �� ��������� ����������� certificate.cer ����� �� ������� �� ����������� jdk � ��������� �������� ������ �� ����� Python:

def sslverify(login, message, sign) :
    /*
     */

    result = getstatusoutput('openssl dgst -verify '
    + file_cer + ' -signature '
    + file_sig + ' ' + file_mes)

    /*
     */

    if rfind(result[1],  'OK')  %gt;= 0:
        return 1
    else:
        return 0

�������



���� �����, ����� ������
"Java 2"
���������>>
��������>>


����� ������
"Java � JavaScript"
���������>>
��������>>

����� � ��� �� �� ����� ���� ������ ������� ���.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun ��������� ��������� ���������� � Java ME �� Java SE
��������� �����!