Библиотека криптографических программ (CASIO fx-9750GP, cfx-9850GP, fx-9860G, TI-89, TI-92, HP-50G, HP-48GII, TI Nspire (и CAS))

Библиотека этих программ позволяет освоить вычисления в криптографии с открытым ключом. Поддерживаются следующие виды вычислений.

Алгоритм RSA:

  • генерация ключей;
  • шифрование;
  • расшифровка;
  • цифровая подпись;
  • проверка цифровой подписи.

Алгоритм Эль-Гамаля:

  • генерация ключей;
  • шифрование;
  • расшифровка;
  • цифровая подпись;
  • проверка цифровой подписи.

Алгоритм Диффи-Хелмана:

  • генерация сеансового симметричного ключа.

Взлом шифра основанного на LFSR (регистре сдвига с линейными обратными связями)

Разложение числа на простые множители ро методом Полларда

Разложение числа на простые множители Р-1 методом Полларда

Криптография на эллиптических кривых:

  • сложение точек над эллиптической кривой;
  • умножение точки на число над эллиптической кривой;
  • алгоритм генерации симметричного сеансового ключа над эллиптической кривой;
  • цифровая подпись (и проверка подписи) над эллиптической кривой;
  • двухключевой шифр над эллиптической кривой.

Разложение числа на простые множители оптимизированным методом перебора.

Возведение целых чисел в степень по модулю.

Деление по модулю целого числа.

Проверка произвольного целого числа на простоту по теореме Ферма (не великой).
Криптографическая система Рабина (один из вариантов реализации)

После загрузки в калькулятор, запустить файл CRYPMAIN, а далее пользоваться подсказками меню. Поскольку в калькуляторе точность составляет 15 десятичных разрядов, то программа в обычных вычислениях работает с целыми числами до 7 разрядов включительно, а с эллиптическими кривыми - до 5 разрядов. В ходе работы используются все 28 регистров памяти, но поскольку их не достаточно, то задействованы ещё первые 30 ячеек списка List6 при вычислениях над эллиптическими кривыми.

В программах, в наиболее критичных местах введена "защита от дурака" в том смысле, что вводимые данные проходят проверку и если не удовлетворяют условиям, то отвергаются и запрашиваются повторно. Например, если надо ввести простое число, а оператор ввёл составное, то калькулятор это обнаружит и будет запрашивать число повторно.

Поскольку в калькуляторе нет кириллицы, то запросы и комментарии на латинице. Возможно словосочетания не самые удачные, но их можно подкорректировать.
Для загрузки разумеется нужен калькулятор с кабелем и программа FA-123, которую можно найти здесь: http://www.alhin.de/cfx9850/inhalte/ru/index.php?n=5

Дополнение 1

Добавлена эта же библиотека, но переписанная под TI89/TI92. Загружается в калькулятор с помощью программы TI Connect. Образуется каталог crypto в который сливаются все файлы. Для запуска программы необходимо перейти в этот каталог и дать с консоли команду crypmain(). Некоторые функции не реализованы, поскольку в TI-бейсике просто есть такие команды.

Дополнение 2

Добавлена конвертированная в формат fx-9860G и русифицированная библиотека криптографических программ. Не русифицирован алгоритм Рабина, поскольку такие криптосистемы оказались не стойкими.

Дополнение 3

В библиотеку для TI89 добавлена программа просмотра больших матриц в программу криптоанализа LFSR, предложенная Vlad_AB. Файл TI89cryp_1.rar

Дополнение 4

Добавлена аналогичная библиотека под HP-50G/HP-48GII. Все файлы собраны в каталог CRYPTO, для начала работы - запустить главное меню - файл MAINCRYPT, а дальше интуиция подскажет :)

Дополнение 5

Библиотека CryptTI92Plus.rar (функционально аналогична TI89cryp_1.rar) адаптирована под другой размер экрана и предназначена для использования на TI-92Plus/TI voyage 200

Изменение 6

Новая версия библиотеки предназначена для использования на TI89/92/Voyage: TI_Crypto.rar В неё встроена новая программа прокрутки матриц от Vlad_AB и модифицирован текст программы криптоанализа регистра сдвига с линейными обратными связями. Дополнения 1, 3, 5 отменены как устаревшие.

Дополнение 7

Аналогичная библиотека написана для TI Nspire и TI Nspire CAS. Работает под ОС версии не ниже 2.0! После загрузки документа запустить программу cryptmain. Далее следовать указаниям меню. Интерфейс получился несколько не удобный по сравнению с, например, TI-89, поскольку в командах бейсика отсутствуют команда выбора из выпадающего меню и команда GetKey. Поэтому сначала всплывает форма где описаны команды вабора, а затем из второй формы калк просит ввести номер пункта меню. Зато считает очень быстро. Если в новых версиях ОС недостающие команды появятся, то можно будет подрихтовать интерфейс.

Кто напишет это же под МК-161?

File attachments: 
Прикрепленный файлРазмер
File CRYPTLIB.rar4.22 KB
File CRYP9860_1.rar4.24 KB
File Prokrutka.rar544 байта
File CRYPTOHP.rar5.52 KB
File TI_Crypto.rar9.7 KB
File Ns_Crypto.rar6.99 KB

Комментарии

CASIO fx-9750G PlusЕсли кого заинтересуют подробности реализации - спрашивайте. Если кому нужен такой калькулятор - CASIO fx-9750G Plus, то у меня есть пару штук таких на продажу по цене примерно $50 плюс почтовая доставка за Ваш счёт.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

А для чего эти программы нужны в калькуляторе???

Мне нужны для дела. Типовые задачи для обучения студентов основам криптографии. А Вам - может и ни к чему...

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Хорошая программа. Может, сообща сделать ее многоплатформенной?
Для HP50G, МК-1хх и на Python-е для планшеток Nokia N810 :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Для TI-89/92 я её уже сделал, но там есть одна проблема - из программы нельзя задать двумерный массив, его нужно создать заранее вручную. У каськи такой проблемы нет. Начал было под HP-48GII/50G переписывать, но сейчас времени мало. Пока только три алгоритма сделал RSA/Hamal/Diffi-Helman. Когда продолжу - не знаю. Если кто её перепишет под МК-161 - было бы интересно. Её 10К памяти программ может хватить. С другой стороны я сам этой программой часто пользуюсь, а тот кто не часто - вряд ли будет на это заморачиваться сам.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Для создания матрицы в TI-89/92 имеется команда NewMat, которая создает массив указанных размеров заполненный нулями.

Для замены нулей на другую константу можно использовать команду Fill.

В HP-50 для этих целей можно использовать команду CON.

Надо попробовать.
У TI есть ещё одно неудобство. Когда выводишь матрицу на экран, а размер матрицы больше экрана, то проблема увидеть те ячейки, что вышли за предел экрана. Это надо остановить программу и войти в редактор матриц. У каськи а режиме просмотра матрицы можно по ней двигаться в любую сторону.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Большую матрицу в TI-89T можно прокручивать и без редактора матриц.

Нужно выделить матрицу и использовать для
прокрутки соответствующие стрелки, но для
прокрутки вверх или вниз нужно удерживать
нажатой клавишу Shift.

Как просмотреть большую матрицу встроенными
средствами в процессе работы программы не
сообразил пока.

Обычно вывожу такие матрицы в конце работы программы
(для TI подсказки в какой переменной смотреть, а для
HP сбрасываю в стек).

Думаю что приемлемым решением этой проблемы
может послужить специальная подпрограмма для
чтения больших матриц на IO-экране с помощью
клавиш управления курсором с выходом из режима
прокрутки нажатием Enter. Шаг прокрутки можно
настраивать.

Никаких сложностей в создании программы
не видно. Попробую сделать ее для TI, а
после и для HP. Комфорт при работе с
программами важен также как и верные
результаты.
:)

Результат верный результат всё-таки важнее комфорта. :-)

Однако комфорт позволяет гораздо быстрее получить верный результат. Особенно в объёмных вычислительных задачах.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Сравнение. Никто не утверждает, что комфорт не важен.

Просто здесь сравнивали комфорт и верные результаты, утверждая их одинаковую важность. Другими словами, для моего оппонента следующие две программы равнозначны:
1. Комфортная программа, дающая неверный результат.
2. Некомфортная программа, дающая верный результат.

Между тем, как первая программа вводит любого пользователя, кроме самого опытного и способного независимо проверить результат, в заблуждение. Вторая же всего лишь неудобна. Чересчур привередливые её существование могут просто игнорировать, а обычные, скрепя сердце, всё-таки выполнят задание.

Иногда Вы слишком придирчивы к словам. Мне так каацца.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Это косвенная защита ПМК 152/161, где можно сделать то же самое, но, в общем случае, ценой бОльших усилий. На нашем сайте, в отличие от сообщества в ЖЖ, предвзятый подход не модерируется (и даже не осуждается), поскольку участники достаточно компетентны, чтобы самостоятельно разобраться в подобных вещах.

Корявый анализ ;-). Сознательная или неосознанная [в этом случае, учи матчасть :) в учебнике по логике] подмена посылок в рассуждении. Комфорт и верные результаты не противопоставлялись. Читай внимательно! :)

Правильно подмечено, что я утверждаю их одинаковую важность. Кроме того, добавлю, если это не очевидно, для меня предпочтителен вариант, когда программа дает верный результат и работать с ней комфортно (оба условия выполняются одновременно).

Так как противопоставление и раделительное ИЛИ (в явном или неявном виде) в утверждении

Комфорт при работе с программами важен также как и верные результаты.

отсутствует,

следовательно, вывод:

Другими словами, для моего оппонента следующие две программы равнозначны:

1. Комфортная программа, дающая неверный результат.
2. Некомфортная программа, дающая верный результат.

цензурно выражаясь, некорректен.

Отрыв от фактического материала и коверканье логики обычно ведет к печальным последствиям.

Если Вы, уважаемый AtH, хотите попридираться, то, пожалуйста, сделайте это умело.
А ЭТО(см. выще) просто скушно.

Простой вопрос > 1. Комфортная программа, дающая неверный результат.
> 2. Некомфортная программа, дающая верный результат.

В первом случае у нас на чаше весов 1 комфорт, 0 верного результата.
Во втором случае у нас на чаше весов 1 верный результат, 0 комфорта.

Какой случай для вас предпочтительнее?

Для меня предпочтительнее 2 случай. Верный результат важнее комфорта.

Как

Как просмотреть большую матрицу встроенными
средствами в процессе работы программы не
сообразил пока.

Это и есть то неудобство, о котором я говорил. Вектор столбец свободных членов после всех преобразований я вывожу затем отдельно в строку, предварительно проверив, получилась ли слева единичная матрица. А у Кэсио можно обойтись без всех этих заморочек. Можно посмотреть выведенную матрицу любой размерности, не завершая работу программы.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Попробовал. Получилось. Спасибо за подсказку.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Я, вроде, спрашивал, но забыл. Можно ли каким-то образом .cat программу загрузить в этот эмулятор?
http://www.omnimaga.org/index.php?PHPSESSID=62d64c2228b033d118b01cd5ac90...

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Я точно не знаю, но пробовал переписать программу по кабелю из 9750 в 9860, а затем из 9860 сохранить в PC и загрузить в эмулятор 9860, загружать в эмулятор 9960 я не пробовал.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Эмулятор работает с файлами *.g1* То есть программу .саt надо скомпилировать в *.g1 ?

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Скорее сконвертировать.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Тут утверждают, что этот эмулятор 9960G есть тот же самый эмулятор калькулятора 9860G, но поновее версией:
http://www.casiocalc.org?s=&showtopic=2573&view=findpost&p=34024

Я попытался конвертировать .CAT в .G1E посредством FX9860G-fileconverter (http://www.casiocalc.org/to/fsdisplay.php?cat2disp=FS.pccasio), он даже создал 29-Кбайтный файл.

Эмулятор загружает .G1E в Storage Memory, при попытке загрузить в Main Memory выдается ошибка "Invalid Type". Что-то где-то не так?

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Версия под 9860. Исторически серия 9960 появилась раньше, чем 9860, поэтому 9860 поновее. http://www.spiderpixel.co.uk/caspro/subhtml/history.html

ОС 9860 работает несколько иначе, чем 9850. Поэтому сконвертировать - я сконвертировал но требуются некоторые доработки, типа русификация интерфейса, добавить кое-где команду STOP потому что вывод на экран немного отличается. Я думал, что доделаю программу, а затем выложу. Или выложить неадаптированную?

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

"И того и другого. И можно без хлеба" (с) Пух :)
Можно и неадаптированную, и потом адаптированную

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

"Терпение, мой друг, и Ваша щетина превратится в золото" (с) Подвиг разведчика ;)

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Попробовал версию 860 в эмуляторе, вроде, все работает

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Всё и должно работать. Я только алгоритм Рабина не русифицировал. Меня "обломало" немного.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Написал программу криптоанализа LFSR под HP-50/HP-48GII и сравнил её с той же программой под кэсио 9750. Система из 8 линейных уравнений решается методом эквивалентных преобразований по модулю 2. Каська считала 14 секунд, а HP-48 на RPL целых 75 секунд... Медленно однако :(
Может возможно заставить калькулятор складывать целые строки по модулю 2, а не отдельные элементы матрицы в цикле. Микропрограммы разработчика должны считать быстрее.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Вероятно, HP-48 (HP-50) со строками матрицы по модулю работать "не умеет". Но списки соответствующими командами обрабатываются, и можно использовать эту особенность. Конвертировать матрицу в список списков (список строк) и складывать их.

Например, имеется некоторая матрица М, тогда для сложения строк i и j можно использовать следующую программу (подпрограмму):

<<
-> i j << M AXL
i GET
M AXL
j GET
ADDTMOD
M AXL
j ROT PUT
AXL 'M' STO
>>
>>

Надо попробовать. Правда, если на сложение двух строк требуется 3 преобразования матрицы в список и 1 из списка в матрицу, то я сомневаюсь, что будет быстрее, чем вычислять поэлементно. Другое дело, если в начале преобразовать матрицу в список списков, затем выполнить всё решение и только потом обратно в матрицу...

Я ещё сравнил время на HP-50 считал 65 секунд, а на TI-89 - 19 секунд.

Теперь понятно зачем HP сделало такой огромный набор команд. Чтобы нивелировать медлительность двойной интерпретации команд RPL->Saturn->ARM9. А я надеялся, что HP будет быстрее...

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Изменил. Попробовал преобразовать матрицу в список списков, выполнить решение операциями со списками и затем обратно из списка списков в матрицу. Время вычислений 36 секунд на НР 48 и той же матрице 8х9. Спасибо за подсказку.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

:-)Может ещё получится подсократить время, если AXL попробовать использовать только дважды. В начале и в конце работы подпрограммки, т.е. преобразовать, сохранить список списков, выполнить необходимые операции и обратно вернуть в матричный вид.

Именно так я и сделал. Преобразовал матрицу в список списков, выполнил вычисления и выполнил обратное преобразование в матрицу. Вот если бы все промежуточные результаты держать только в стеке или сохранять только изменённые фрагменты списка списков, а не сохранять весь список списков целиком после каждой операции над строками. Но это сложнее и надо много телодвижений в стеке делать.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

А команда RREFMOD случаем не может заменить энту подпрограмму?

К сожалению нет. При решении системы по модулю 2 получаются не только "0", "1", но и "-1".
Правда, если дописать затем программу умножения элементов матрицы на себя, чтобы "-1" превратить в "1", то так получилось сделать. на 48 - 16 секунд, а на 50 - 14 секунд.

Не понимаю зачем НР сделало отрицательные числа в ответах при операциях по модулю...

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Набор команд сформировался до перехода на ARM9. Быстродействие же эмулятора Сатурна соответствует самому Сатурну.

Для HP-48GII/HP-50G. Добавил такую же библиотеку программ, но написанную под HP-48GII/HP-50G

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Новые изменения. Воспользовавшись тем, что новая программа просмотра больших матриц от Vlad_AB работает быстро, я внес изменения в программу криптоанализа РСЛОС для повышения удобства вычислений. Эта программа одинаково хорошо работает, как на 89 так и на 92 серии, поэтому устаревшие версии проекта я отключил.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

TI Nspire & TI Nspire CASДобавил версию библиотеки для TI Nspire. Мой подарок коллегам по увлечению в честь приближающегося моего дня рождения!

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G