ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Java-Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΈ подписываниС Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ JAR-Ρ„Π°ΠΉΠ»Π° элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Java 2 располагаСт ΠΌΠΎΡ‰Π½ΠΎΠΉ встроСнной систСмой бСзопасности, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ API-интСрфСйсы ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обСспСчСния бСзопасности Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. Π‘Ρ€Π΅Π΄ΠΈ особСнностСй языка программирования Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, отсутствиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Java-Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΈ подписываниС Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ JAR-Ρ„Π°ΠΉΠ»Π° элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ГосударствСнноС ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ образования ΠŸΠ•Π’Π•Π Π‘Π£Π Π“Π‘ΠšΠ˜Π™ Π“ΠžΠ‘Π£Π”ΠΠ Π‘Π’Π’Π•ΠΠΠ«Π™ Π£ΠΠ˜Π’Π•Π Π‘Π˜Π’Π•Π’ ΠŸΠ£Π’Π•Π™ Π‘ΠžΠžΠ‘Π©Π•ΠΠ˜Π―

ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ систСмы»

ΠŸΠžΠ―Π‘ΠΠ˜Π’Π•Π›Π¬ΠΠΠ― Π—ΠΠŸΠ˜Π‘ΠšΠ

ΠΊ курсовому ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ программирования»

Π½Π° Ρ‚Π΅ΠΌΡƒ: «Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Java-Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ JAR-Ρ„Π°ΠΉΠ»Π° элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью«

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»:

студСнт Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠšΠ˜Π‘-708

Π’Π°Ρ€Π°Π½ΠΈΠ½ Π’.Π’.

Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ:

ΠΊ.Ρ‚.Π½., Π΄ΠΎΡ†. ΠšΠΎΠΆΠΎΠΌΠ±Π΅Ρ€Π΄ΠΈΠ΅Π²Π° Π“. Π˜.

Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ 2009

Π—Π°Π΄Π°Π½ΠΈΠ΅

ΠΏΠΎ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ программирования»

Π½Π° Ρ‚Π΅ΠΌΡƒ: «Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Java-Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ JAR-Ρ„Π°ΠΉΠ»Π° элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью»

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ исходных Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°ΠΏΠΏΠ»Π΅Ρ‚, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ β„–4 «Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°ΠΏΠΏΠ»Π΅Ρ‚Π° с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ многопоточности Java».

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ задания № 20

НСобходимо Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°ΠΏΠΏΠ»Π΅Ρ‚Π° с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹ΠΉ JAR-Ρ„Π°ΠΉΠ», содСрТащий Π°ΠΏΠΏΠ»Π΅Ρ‚.

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒ JAR-Ρ„Π°ΠΉΠ» элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью (ЭЦП) ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ бСзопасности для подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π² Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ запись, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ доступ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния-записи.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ jar, keytool ΠΈ jarsigner, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ JDK 1.4.x с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ plug-in для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° MS IE 5,(6),(7).

Аннотация

Π’ Π΄Π°Π½Π½ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Java-Π°ΠΏΠΏΠ»Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ многопоточности Java: использованиС Π΄Π²ΡƒΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ рисования Π°ΠΏΠΏΠ»Π΅Ρ‚Π°. Π’Π°ΠΊΠΆΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΏΡ€ΠΈ прСдоставлСнии ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π² доступа. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обращСния ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ спСциализированных классов Java API.

Архивный JAR-Ρ„Π°ΠΉΠ», содСрТащий Π°ΠΏΠΏΠ»Π΅Ρ‚, подписываСтся элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью. Для Π°ΠΏΠΏΠ»Π΅Ρ‚Π° задаСтся ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° бСзопасности, ΠΏΡƒΡ‚Ρ‘ΠΌ создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π°ΠΏΠΏΠ»Π΅Ρ‚Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ бСзопасности Sandbox — «ΠŸΠ΅ΡΠΎΡ‡Π½ΠΈΡ†Π°».

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью Π°ΠΏΠΏΠ»Π΅Ρ‚ выполняСтся Π² ΡΡ€Π΅Π΄Π΅ MS IE Ρ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ plug-in ΠΈΠ· JDK 1.4.x.

ПослС запуска Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдоставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ подписанному Π°ΠΏΠΏΠ»Π΅Ρ‚Ρƒ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ».

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

1. АпплСт с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ многопоточности Java ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

2.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ JAR-Ρ„Π°ΠΉΠ»Π°

2.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

2.3 ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ JAR-Ρ„Π°ΠΉΠ»Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью

2.4 Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности для подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

3. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Java 2 располагаСт ΠΌΠΎΡ‰Π½ΠΎΠΉ встроСнной систСмой бСзопасности, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ API-интСрфСйсы ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обСспСчСния бСзопасности Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. Π‘Ρ€Π΅Π΄ΠΈ особСнностСй языка программирования Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, отсутствиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, эффСктивный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’Π°ΠΆΠ½Ρ‹ΠΌΠΈ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»ΠΈΠΌΡ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ систСмы бСзопасности Java 2 ΡΠ²Π»ΡΡŽΡ‚ΡΡ Java Cryptography Architecture (JCA) — Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Java, Π° Ρ‚Π°ΠΊΠΆΠ΅ Java Cryptography Extension (JCE) — криптографичСскоС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Java.

ЦСлью Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся — подписаниС Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ JAR-Ρ„Π°ΠΉΠ»Π°, содСрТащСго Π°ΠΏΠΏΠ»Π΅Ρ‚, элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности для подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°; ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ студСнтов с ΠΊΡ€ΠΈΠΏΡ‚ографичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ: ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹ΠΉ JAR-Ρ„Π°ΠΉΠ», ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒ JAR-Ρ„Π°ΠΉΠ» Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ бСзопасности для подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся подписанный элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью Π°ΠΏΠΏΠ»Π΅Ρ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

1. АпплСт с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ многопоточности Java ΠΈ

ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС

Π°ΠΏΠΏΠ»Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹ΠΉ элСктронный Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подпись

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.util.Calendar;

// Класс Π°ΠΏΠΏΠ»Π΅Ρ‚Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйсы Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ событий

public class Lab4 extends Applet implements ActionListener, ItemListener, Runnable

{

Panel p1, p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,cards, pfield, pb, pread;

Label lb1, lb2,lb3;

CheckboxGroup cbg;

Checkbox cb1, cb2,cb3,cb4;

List list;

Canvas cv;

Button b1, b2,b3,b4,start, stop, read;

CardLayout cardLO;

Scrollbar sb1, sb2,sb3,sb4;

Color col;

int posX, strWidth;

FontMetrics fm;

int rectX=0,rectY=0,posFlag=0,movFlag=0,ovalX=0,ovalY=0;

int animFlag=0;

int rColor, gColor, bColor;

// Π€Π»Π°Π³ остановки Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

boolean stopFlag;

// ΠŸΠΎΡ‚ΠΎΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ

Thread t = null;

//ВСкстовая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для Π²Ρ‹Π²ΠΎΠ΄Π° содСрТимого Ρ„Π°ΠΉΠ»Π° ΠΆΡƒΡ€Π½Π°Π»Π°

TextArea fileText;

// Имя Ρ„Π°ΠΉΠ»Π°-ΠΆΡƒΡ€Π½Π°Π»Π° для записи ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

String fileName = «» ;

// Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ строк (ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ½Ρ†Π° строки)

String ls;

// Π‘ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ записи Π² Ρ„Π°ΠΉΠ»

BufferedWriter out;

public void init ()

{

setLayout (new GridLayout (2,2));

setForeground (Color.black);

col = Color. black;

// ЛЕВАЯ Π’Π•Π Π₯НЯЯ ΠŸΠΠΠ•Π›Π¬

p1 = new Panel (new BorderLayout ());

p1.setBackground (Color.lightGray);

p2= new Panel ();

lb1 = new Label («ΠΠΊΡ‚ивная панСль: «, lb1. CENTER);

p2.add (lb1);

p1.add (p2,BorderLayout.NORTH);

// ПанСль Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΎΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π›Π•Π’ΠžΠ™ Π’Π•Π Π₯НЕЙ ΠΏΠ°Π½Π΅Π»ΠΈ

p3 = new Panel (new GridLayout (2,2));

cbg = new CheckboxGroup ();

cb1= new Checkbox («Π’сС ΠΏΠ°Π½Π΅Π»ΠΈ», cbg, true);

cb2= new Checkbox («1-я панСль», cbg, false);

cb3= new Checkbox («2-я панСль», cbg, false);

cb4= new Checkbox («3-я панСль», cbg, false);

cb1.addItemListener (this);

cb2.addItemListener (this);

cb3.addItemListener (this);

cb4.addItemListener (this);

p3.add (cb1);

p3.add (cb2);

p3.add (cb3);

p3.add (cb4);

p1.add (p3,BorderLayout.CENTER);

add (p1);

// Π’Π•Π Π₯НЯЯ ΠŸΠ ΠΠ’ΠΠ― ΠŸΠΠΠ•Π›Π¬

p4 = new Panel (new GridLayout (1,1));

list = new List (9,false);

list.add («Π§Ρ‘Ρ€Π½Ρ‹ΠΉ»);

list.add («Π‘ΠΈΠ½ΠΈΠΉ»);

list.add («ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ»);

list.add («Π—Π΅Π»Ρ‘Π½Ρ‹ΠΉ»);

list.add («Π–Ρ‘Π»Ρ‚Ρ‹ΠΉ»);

list.add («ΠžΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ»);

list.add («Π ΠΎΠ·ΠΎΠ²Ρ‹ΠΉ»);

list.add («Π€ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ»);

list.add («Π’Ρ‘ΠΌΠ½ΠΎ-сСрый»);

list.addItemListener (this);

p4.add (list);

add (p4);

// ЛЕВАЯ ΠΠ˜Π–ΠΠ―Π― ΠŸΠΠΠ•Π›Π¬

// ПанСль с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ

p5 = new Panel (new GridLayout (2,2));

b1 = new Button («ΠšΠ²Π°Π΄Ρ€Π°Ρ‚»);

b2 = new Button («ΠšΡ€ΡƒΠ³»);

b3 = new Button («Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ»);

b4 = new Button («Π‘Ρ‚Ρ€ΠΎΠΊΠ°»);

b1.addActionListener (this);

b2.addActionListener (this);

b3.addActionListener (this);

b4.addActionListener (this);

p5.add (b1);

p7.add (b2);

p5.add (b3);

p5.add (b4);

pb = new Panel (new GridLayout (1,2,5,0));

lb2 = new Label («Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ», lb1. CENTER);

start = new Button («Π—апуск»); start. addActionListener (this);

stop = new Button («ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°»);stop.addActionListener (this);

pb.add (start);

pb.add (stop);

// !!! ΠŸΠΠΠ•Π›Π¬ Π”Π›Π― Π§Π’Π•ΠΠ˜Π― ЀАЙЛА-ЖУРНАЛА !!!

pfield = new Panel (new BorderLayout ());

pread = new Panel (new GridLayout (3,1));

read = new Button («Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°-ΠΆΡƒΡ€Π½Π°Π»Π°»);

read.addActionListener (this);

// ВСкстовая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΆΡƒΡ€Π½Π°Π»Π°

fileText = new TextArea ();

// НазваниС Ρ„Π°ΠΉΠ»Π°-ΠΆΡƒΡ€Π½Π°Π»Π° задаётся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² HTML-Ρ„Π°ΠΉΠ»Π΅

// ΠΈΠ»ΠΈ Ссли Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚ — создаётся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

fileName = getParameter («FileName»);

if (fileName == null)

fileName = «log.txt» ;

ls = System. getProperty («line.separator»); // Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ строк

fileText.setBackground (Color.white);

pread.add (lb2);

pread.add (pb);

pread.add (read);

pfield.add (p5,BorderLayout.NORTH);

pfield.add (pread, BorderLayout. CENTER);

pfield.add (fileText, BorderLayout. SOUTH);

add (pfield);

// ΠŸΠ ΠΠ’ΠΠ― ΠΠ˜Π–ΠΠ―Π― ΠŸΠΠΠ•Π›Π¬

// ΠŸΠΠΠ•Π›Π¬ Π‘ ΠšΠΠ Π’АМИ (ГЛАВНАЯ)

cardLO = new CardLayout ();

cards = new Panel ();

cards.setLayout (cardLO);

cards.setBackground (Color.white);

posX = 65;

// ΠŸΠ•Π Π’ΠΠ― ΠŸΠΠΠ•Π›Π¬ Π’ ΠšΠΠ Π’АΠ₯

p6 = new Panel (new BorderLayout ())

{

public void paint (Graphics g)

{

if (animFlag==0)

{

g.setColor (col);

g.drawRect (rectX, rectY, 50,50); }

}

};

// Π’Π’ΠžΠ ΠΠ― ΠŸΠΠΠ•Π›Π¬ Π’ ΠšΠΠ Π’АΠ₯

p7 = new Panel (new BorderLayout ())

{

public void paint (Graphics g)

{

if (animFlag==1)

{

g.setColor (col);

g.fillOval (ovalX, ovalY, 50,50); }

}

};

// Π’Π Π•Π’Π¬Π― ΠŸΠΠΠ•Π›Π¬ Π’ ΠšΠΠ Π’АΠ₯

p8 = new Panel (new BorderLayout ())

{

public void paint (Graphics g)

{

g.setColor (col);

int x[] = {posX, posX+40,posX+80};

int y[] = {80,20,80};

g.drawPolygon (x, y,3);

}

};

sb3= new Scrollbar (Scrollbar.HORIZONTAL, 0,1,0,100);

sb3.addAdjustmentListener (new AdjustmentListener ()

{

public void adjustmentValueChanged (AdjustmentEvent ae)

{

posX = (ae.getValue ())*(cards.getSize ().width -80) /sb3.getMaximum ();

p8.repaint ();

}

});

p8.add (sb3,BorderLayout.SOUTH);

// ЧЕВВЁРВАЯ ΠŸΠΠΠ•Π›Π¬ Π’ ΠšΠΠ Π’АΠ₯

P9 = new Panel (new BorderLayout ())

{

public void paint (Graphics g)

{

fm = g. getFontMetrics ();

strWidth = fm. stringWidth («J A V A»);

g.setFont (new Font («Dialog», Font. ITALIC, 20));

g.setColor (col);

g.drawString («J A V A», posX, 65);

}

};

sb4= new Scrollbar (Scrollbar.HORIZONTAL, 0,1,0,5);

sb4.addAdjustmentListener (new AdjustmentListener ()

{

public void adjustmentValueChanged (AdjustmentEvent ae)

{

posX = (ae.getValue ())*(cards.getSize ().width — strWidth)/sb4.getMaximum ();

p9.repaint ();

}

});

p9.add (sb4,BorderLayout.SOUTH);

// Π”ΠžΠ‘ΠΠ’Π›Π•ΠΠ˜Π• КАРВ Π’ ΠŸΠΠΠ•Π›Π¬ Π‘ ΠšΠΠ Π’АМИ (cards)

cards.add (p6," sqaure");

cards.add (p7," oval");

cards.add (p8," rect");

cards.add (p9," text");

add (cards);

// Π‘ΠžΠ—Π”ΠΠΠ˜Π• Π‘Π£Π€Π•Π Π˜Π—Π˜Π ΠžΠ’ΠΠΠΠžΠ“Πž Π‘Π˜ΠœΠ’ΠžΠ›Π¬ΠΠžΠ“Πž ПОВОКА Π—ΠΠŸΠ˜Π‘Π˜ Π’ Π€ΠΠ™Π›

try

{

// Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² Π΄Π°Π½Π½ΠΎΠΌ конструкторС класса Buffered ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

// ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ основного ΠΏΠΎΡ‚ΠΎΠΊΠ° (ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…)

out = new BufferedWriter (new FileWriter (fileName));

}

catch (IOException ex)

{

fileText.setText («ΠžΡˆΠΈΠ±ΠΊΠ° ΠΏΡ€ΠΈ создании ΠΏΠΎΡ‚ΠΎΠΊΠ° записи: «+ ls);

fileText.append (ex.toString () + ls);

}

catch (SecurityException ex)

{

fileText.setText («ΠΠ΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ: «+ ls);

fileText.append (ex.toString () + ls);

read.setEnabled (false);

}

if (out ≠ null)

{

// Если созданиС Buffered-ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ‚ΠΎ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅

// Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ сообщСниС ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄Π°Ρ‚Π΅ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Calendar c = Calendar. getInstance ();

String dateMessage ="Π”Π°Ρ‚Π° ΠΈ Π²Ρ€Π΅ΠΌΡ: «+ c. get (Calendar.DAY_OF_MONTH) + «/» +

(c.get (Calendar.MONTH)+1) + «- «+ c. get (Calendar.YEAR) +

" «+ c. get (Calendar.HOUR_OF_DAY) + «:» +

c.get (Calendar.MINUTE);

// ПослС записи Π² String-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ dateMessage ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄Π°Ρ‚Π΅ ;

// вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ writeLogMessage

writeLogMessage (dateMessage);

writeLogMessage («Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°»);

}

/*———————INIT———————*/

}

// Π’Ρ‹Π²ΠΎΠ΄ сообщСния Π² Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ для записи Π² Ρ„Π°ΠΉΠ»

private void writeLogMessage (String message)

{

// Π—Π°ΠΏΠΈΡΡŒ Π² Ρ„Π°ΠΉΠ» осущСствляСтся Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° write объСк-Ρ‚Π° out Ρ‚ΠΈΠΏΠ° BufferedWriter

try

{

out.write (message);

out.newLine ();

}

catch (IOException ex)

{

fileText.setText («ΠžΡˆΠΈΠ±ΠΊΠ° записи Π² Ρ„Π°ΠΉΠ»:» + ls);

fileText.append (ex.toString () + ls);

}

}

// Запуск ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

public void run ()

{

// Пока Ρ„Π»Π°Π³ остановки Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Ρ€Π°Π²Π΅Π½ false — происходит анимация

while (!stopFlag)

{

try

{

if (animFlag==0)

{

if (posFlag==0) // ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΡ€Π°Π²ΠΎ ΠΏΠΎ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈ

{

p6.repaint (); // ΠŸΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²ΠΊΠ°

// Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ (Π½Π° 40 мс) остановка ΠΏΠΎΡ‚ΠΎΠΊΠ° для создания эффСкта Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

// Π”Π°Π»Π΅Π΅ ΠΈΠ΄ΡƒΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ измСнСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚/

Thread.currentThread ().sleep (40);

rectX+=5;

if (rectX>p6.getSize ().width-50)

{

rectX-=7;

posFlag =1;

if (posFlag==1)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p6.repaint ();

}

}

}

if (posFlag==1) // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ· ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈ

{

p6.repaint ();

Thread.currentThread ().sleep (40); // ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ

rectY+=5;

if (rectY>p6.getSize ().height — 50)

{

rectY=p6.getSize ().height-53;

posFlag=2;

if (posFlag==2)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p6.repaint ();

}

}

}

if (posFlag==2) // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π»Π΅Π²ΠΎ ΠΏΠΎ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈ

{

if (rectX>0)

{

p6.repaint ();

Thread.currentThread ().sleep (40);

rectX-=5;

}

else

{

rectX=0;

posFlag=3;

if (posFlag==3)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p6.repaint ();

}

}

}

if (posFlag==3) // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ Π»Π΅Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈ

{

if (rectY>0)

{

p6.repaint ();

Thread.currentThread ().sleep (40);

rectY-=5;

if (rectY<0)

{

rectX=0;

rectY=0;

p6.repaint ();

{

if (rectX==0 && rectY==0)

{

posFlag=0;

if (posFlag==0)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p6.repaint ();

}

}

}

}

}

}

}

if (animFlag==1)

{

if (movFlag==0) // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ свСрху Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠ³ΠΎΠ»

{

p7.repaint ();

Thread.currentThread ().sleep (50);

ovalX+=5;

ovalY+=5;

if (ovalX>p7.getSize ().width-50)

{

ovalX = p7. getSize ().width -50;

ovalY = p7. getSize ().height-52;

movFlag =1;

if (movFlag==1)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p7.repaint ();

}

}

}

if (movFlag==1) // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈ

{

p7.repaint ();

Thread.currentThread ().sleep (50);

ovalX-=5;

if (ovalX<0)

{

ovalX=0;

movFlag=2;

if (movFlag==2)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p7.repaint ();

}

}

}

if (movFlag==2) // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ снизу Π²Π²Π΅Ρ€Ρ…

{

p7.repaint ();

Thread.currentThread ().sleep (50);

ovalX+=5;

ovalY-=5;

if (ovalX>p7.getSize ().width-50)

{

ovalX = p10. getSize ().width — 52;

ovalY = 0;

movFlag=3;

if (movFlag==3)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p7.repaint ();

}

}

}

if (movFlag==3) // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ

{

p7.repaint ();

Thread.currentThread ().sleep (50);

ovalX-=5;

if (ovalX<0)

{

ovalX = 0;

movFlag=0;

if (movFlag==0)

{

rColor = (int)(255*Math.random ());

gColor = (int)(255*Math.random ());

bColor = (int)(255*Math.random ());

col = new Color (rColor, gColor, bColor);

p7.repaint ();

}

}

}

}

}

catch (InterruptedException e)

{

return; // Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ

}

}

}

//РСализация Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ

public void actionPerformed (ActionEvente)

{

String ac = e. getActionCommand ();

if (ac.equals («ΠšΠ²Π°Π΄Ρ€Π°Ρ‚»))

{

animFlag=0;

cardLO.show (cards," sqaure");

writeLogMessage («Π ΠΈΡΡƒΠ΅Ρ‚ся ΠšΠ²Π°Π΄Ρ€Π°Ρ‚»);

}

if (ac.equals («ΠšΡ€ΡƒΠ³»))

{

animFlag=1;

cardLO.show (cards," oval");

writeLogMessage («Π ΠΈΡΡƒΠ΅Ρ‚ся ΠšΡ€ΡƒΠ³»);

}

if (ac.equals («Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ»))

{

cardLO.show (cards," rect");

}

if (ac.equals («Π‘Ρ‚Ρ€ΠΎΠΊΠ°»))

{

cardLO.show (cards," text");

}

else if («Π—апуск» .equals (ac))

{

t = new Thread (this);

stopFlag = false;

t.start ();

start.setEnabled (false);

writeLogMessage («ΠŸΠΎΡ‚ΠΎΠΊ Π·Π°ΠΏΡƒΡ‰Π΅Π½»);

}

else if («ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°» .equals (ac))

{

stopFlag=true;

t = null;

start.setEnabled (true);

writeLogMessage («ΠŸΠΎΡ‚ΠΎΠΊ остановлСн»);

}

if («Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°-ΠΆΡƒΡ€Π½Π°Π»Π°» .equals (ac))

{

try

{

// Бброс Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° (запись Π² Ρ„Π°ΠΉΠ»)

out.flush ();

// Π”Π°Π»Π΅Π΅ происходит Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСкстовой области

// Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, содСрТащимися Π² Ρ‚Скстовом Ρ„Π°ΠΉΠ»Π΅ Lab4Log. txt

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ символьного ΠΏΠΎΡ‚ΠΎΠΊΠ° чтСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π°*/

BufferedReader in = new BufferedReader (new FileReader (fileName));

String s = «», line;

while ((line = in. readLine ()) ≠ null)

s += line + «n» ;

fileText.setText (s);

in.close ();

}

catch (IOException ex)

{

fileText.setText («ΠžΡˆΠΈΠ±ΠΊΠ° чтСния Ρ„Π°ΠΉΠ»Π°: «+ ls);

fileText.append (ex.toString ());

}

}

}

// РСализация Π±Π»ΠΎΠΊΠ° ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ ΠΎΡ‚ ΡΠΏΠΈΡΠΊΠ° List ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ (CheckBox)

public void itemStateChanged (ItemEvent ie)

{

if (ie.getSource () == list)

{

String s = list. getSelectedItem ();

if (s.equals («Π§Ρ‘Ρ€Π½Ρ‹ΠΉ»))

{

col = Color. black;

}

if (s.equals («Π‘ΠΈΠ½ΠΈΠΉ»))

{

col = Color. blue;

}

if (s.equals («ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ»))

{

col = Color. red;

}

if (s.equals («Π—Π΅Π»Ρ‘Π½Ρ‹ΠΉ»))

{

col = Color. green;

}

if (s.equals («Π–Ρ‘Π»Ρ‚Ρ‹ΠΉ»))

{

col = Color. yellow;

}

if (s.equals («ΠžΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ»))

{

col = Color. orange;

}

if (s.equals («Π ΠΎΠ·ΠΎΠ²Ρ‹ΠΉ»))

{

col = Color. pink;

}

if (s.equals («Π€ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ»))

{

col = Color. magenta;

}

if (s.equals («Π’Ρ‘ΠΌΠ½ΠΎ-сСрый»))

{

col = Color. darkGray;

}

p6.repaint ();

p7.repaint ();

p8.repaint ();

p9.repaint ();

}

}

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° события ΠΎΡ‚ CheckBox (ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ доступности ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈ ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²)

if (ie.getSource () == cb1)

{

p1.setEnabled (true);p4.setEnabled (true);

p7.setEnabled (true);

cards.setEnabled (true);

}

if (ie.getSource () == cb2)

{

p1.setEnabled (true);p4.setEnabled (true);

p7.setEnabled (false);

cards.setEnabled (false);

}

if (ie.getSource () == cb3)

{

p1.setEnabled (true);p4.setEnabled (false);

p7.setEnabled (true);

cards.setEnabled (false);

}

if (ie.getSource () == cb4)

{

p1.setEnabled (true);p4.setEnabled (false);

p7.setEnabled (false);

cards.setEnabled (true);

}

}

}

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

2.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ JAR-Ρ„Π°ΠΉΠ»Π°

Для подписания Π°ΠΏΠΏΠ»Π΅Ρ‚Π° элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью Π΅Π³ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ Π² Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹ΠΉ JAR-Ρ„Π°ΠΉΠ». Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ для этой Ρ†Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° jar, Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Для создания Π°Ρ€Ρ…ΠΈΠ²Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»Π°ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

jar cfv Lab4.jar Lab4*.class,

Π³Π΄Π΅: jar - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, которая ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π°Ρ€Ρ…ΠΈΠ²

cfv - это Π½Π°Π±ΠΎΡ€ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Β· с — ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ создаётся Π½ΠΎΠ²Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ²

Β· f - ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΡΠΏΠΈΡΠΊΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² — имя Π°Ρ€Ρ…ΠΈΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан

Β· v - Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»ΡŒ сообщСний ΠΎ Π²ΡΠ΅Ρ… дСйствиях ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ jar

Lab4.jar — Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π°

Lab4*.class — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹ классов располоТСнныС Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π°Ρ€Ρ…ΠΈΠ²Π΅ Lab4.jar

ΠŸΡ€ΠΈ этом ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° jar создаёт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ META-INF с Ρ„Π°ΠΉΠ»ΠΎΠΌ описания Π°Ρ€Ρ…ΠΈΠ²Π° MANIFEST.MF

Π’Π°ΠΊΠΆΠ΅ Π² HTML Ρ„Π°ΠΉΠ»Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ для запуска Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π±Ρ‹Π»ΠΈ внСсСны измСнСния, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ARCHIVE элСмСнта Applet. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ARCHIVE = Lab4.JAR.

2.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Π”Π°Π»Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ keytool создаётся ΠΏΠ°Ρ€Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ («ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ/Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ») ΠΈ ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ ΠΏΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ X.509 для псСвдонима «Taraninkey» Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Taraninstore Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

Для создания самоподписанного сСртификата ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»Π°ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

keytoolgenkeyalias «Taraninkey» -keystore Taraninstore,

Π³Π΄Π΅:

-genkey - ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° keytool Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ

-alias «Taraninkey» - псСвдоним, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ размСщаСтся сСртификат

-keystore Taraninstore - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎ Ρ‚рСбованиям ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Π±Ρ‹Π» Π²Π²Π΅Π΄Ρ‘Π½ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, информация ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ сСртификата ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

Π’ Π΄Π°Π½Π½ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° «Taraninkey» — 123 369, Π° ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ «Taraninstore» — 123.

ΠŸΡ€ΠΈ создании ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΈΠΈ сСртификата Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹:

Β· Алгоритм ΠΊΠ»ΡŽΡ‡Π° RSA

Β· Алгоритм подписи MD-5

2.3 ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ JAR-Ρ„Π°ΠΉΠ»Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью

Архивный JAR-Ρ„Π°ΠΉΠ» подписываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ jarsigner. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

jarsigner -keystore Taraninstore Lab4.jar «Taraninkey»

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° послС Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» описания Π°Ρ€Ρ…ΠΈΠ²Π° MANIFEST.MF Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ META-INF Π°Ρ€Ρ…ΠΈΠ²Π°.

Π’ Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ записи для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° класса, входящСго Π² Π°Ρ€Ρ…ΠΈΠ². Π—Π°ΠΏΠΈΡΡŒ Ρ„Π°ΠΉΠ»Π° класса Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ имя ΠΈ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡ‚ Ρ„Π°ΠΉΠ»Π°.

Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ META-INF Π°Ρ€Ρ…ΠΈΠ²Π° добавляСтся Ρ„Π°ΠΉΠ» подписи TARNINK.SF.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° подписи TARNINK.SF.

Π€Π°ΠΉΠ» подписи ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π°Ρ€Ρ…ΠΈΠ²Π΅, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дайдТСста содСрТит для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ дайдТСста, вычислСнного ΠΈΠ· Π·Π°ΠΏΠΈΡΠΈ Ρ„Π°ΠΉΠ»Π° Π² Ρ„Π°ΠΉΠ»Π΅ описания MANIFEST.MF.

На Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ этапС подписания Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ META-INF Ρ„Π°ΠΉΠ»Π° Π°Ρ€Ρ…ΠΈΠ²Π° добавляСтся Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» подписи TARANINK.RSA. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° подписи ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° keytool ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи RSA. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит подпись Ρ„Π°ΠΉΠ»Π° подписи TARNINK.SF ΠΈ ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚, Π·Π°Π²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈ создании подписи.

2.4 Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности для подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ для получСния доступа ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, для подписанного элСктронной Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью Π°ΠΏΠΏΠ»Π΅Ρ‚Π°, Π±Ρ‹Π» создан ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности Lab4.policy.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° — Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… записСй, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° доступа, прСдоставляСмыС источнику ΠΊΠΎΠ΄Π° Π°ΠΏΠΏΠ»Π΅Ρ‚Π°. Данная запись ΠΏΡ€Π°Π²Π° доступа прСдоставляСт ΠΏΡ€Π°Π²ΠΎ чтСния/записи всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

3. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

ΠŸΡ€ΠΈ запускС Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π² ΡΡ€Π΅Π΄Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° MS IE 5(6) с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Java plgu-in ΠΈΠ· JDK 1.4.x систСма бСзопасности Π·Π°Π΄Π°Ρ‘Ρ‚ вопрос ΠΎ Π΄ΠΎΠ²Π΅Ρ€ΠΈΠΈ поставщику, Ρ‡ΡŒΠΈΠΌ сСртификатом Π·Π°Π΅Π²Π΅Ρ€Π΅Π½ Π°ΠΏΠΏΠ»Π΅Ρ‚.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° Grant this session Π°ΠΏΠΏΠ»Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΏΡ€Π°Π²Π° доступа ΠΊΠΎ Π²ΡΠ΅ΠΌ рСсурсам. Для обращСния ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΠ²ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°-ΠΆΡƒΡ€Π½Π°Π»Π°, хранящСгося Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ дискС, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ «View Certificate».

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Deny Π°ΠΏΠΏΠ»Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚Π΅ΠΌΠΈ рСсурсами, ΠΏΡ€Π°Π²Π° доступа ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ прописаны Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности. ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Grant always Π°ΠΏΠΏΠ»Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΏΡ€Π°Π²Π° доступа ΠΊΠΎ Π²ΡΠ΅ΠΌ рСсурсам, ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запускС Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ запрос ΠΎ Π΄ΠΎΠ²Π΅Ρ€ΠΈΠΈ поставщику, ΠΏΡ€Π°Π²Π° доступа Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски ΠΊΠΎ Π²ΡΠ΅ΠΌ рСсурсам.

ΠŸΡ€ΠΈ запускС подписанного Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΏΠΎΠ΄ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ appletviewer Π°ΠΏΠΏΠ»Π΅Ρ‚ автоматичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ€Π΅ΡΡƒΡ€ΡΠ°ΠΌ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½ΠΎΠΌ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

ΠšΠΎΡ€Π½ΠΈΠ΅Π½ΠΊΠΎ А.А., ΠšΠΎΠΆΠΎΠΌΠ±Π΅Ρ€Π΄ΠΈΠ΅Π²Π° Π“. И., Π•Ρ€ΠΎΡ„Π΅Π΅Π² П. Π’. ЭлСктронная цифровая подпись ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Java-Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ². ΠœΠ΅Ρ‚ΠΎΠ΄. указания. — Π‘Пб.: ΠŸΠ“Π£ΠŸΠ‘, 2005. — 28 с.

ΠšΠΎΡ€Π½ΠΈΠ΅Π½ΠΊΠΎ А.А., ΠšΠΎΠΆΠΎΠΌΠ±Π΅Ρ€Π΄ΠΈΠ΅Π²Π° Π“. И., КисСлСв И. Π‘. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ криптографичСской Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Java: ΠœΠ΅Ρ‚ΠΎΠ΄. указания. — Π‘Пб.: ΠŸΠ“Π£ΠŸΠ‘, 2006. — 35 с ΠΠΎΡƒΡ‚ΠΎΠ½ П., Π¨ΠΈΠ»Π΄Ρ‚ Π“. Java 2: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Π‘Пб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2006

Java 2 SDK, Standard Edition Documentation, version 1.2.2.

Яворски Π”ΠΆ., ΠŸΠ΅Ρ€Ρ€ΠΎΡƒΠ½ П. БистСма бСзопасности Java, 2001.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ