perl6 Создание исполняемого файла? - PullRequest
0 голосов
/ 06 января 2019

Я использую Моар. Можно ли создавать perl6 исполняемые файлы сейчас?

У меня есть исходные коды, разработанные для machineA, и я хочу запустить его на machineB, который примерно в 3 раза быстрее, чем machineA, но я не хочу, чтобы люди на machineB могли просматривать исходные коды.

Или мне нужно перейти на Java VM?

Если невозможно создать исполняемые файлы perl6, как лучше защитить интеллектуальную собственность компании / отдела?

Большое спасибо !!!

lisprog

1 Ответ

0 голосов
/ 08 января 2019

Для простых вещей, и если вы запускаете его своими руками на machineB, вы можете попытаться расшифровать источник в вашей программе или в STDOUT, а затем передать его в perl6. Существует много вариантов шифрования и дешифрования, например, одноразовая клавиатура, gpg или даже безопасное считывание данных через сокеты на машине A. Вот пример подтверждения концепции с использованием zip и unzip,

cat my.p6
for 1 .. 5 { say rand }
zip -e my.zip my.p6
Enter password:
Verify password:
adding: my.p6 (stored 0%)
unzip -p my.zip | perl6
[my.zip] my.p6 password:
0.6868457931159548
0.3818693072902063
0.26339483730150215
0.03617574596367301
0.1992317319783774

Что касается шифрования одноразовой клавиатурой на уровне оболочки, то будет использоваться скрипт (требуется openssl и ssh),

./sshencdec.sh -p ~/.ssh/id_rsa.pub < my.p6 > my.p6.enc
./sshencdec.sh -s ~/.ssh/id_rsa  < my.p6.enc | perl6
Enter pass phrase for /home/david/.ssh/id_rsa:
0.4554567534399926
0.5215978159072545
0.5188661477620019
0.4928945548121154
0.2916414959794953
cat my.p6.enc
-- encrypted with https://git.e.tern.al/s2/sshencdec
-- keys
-- key
M32P8T5hAbkozzu9Hsb0UxaHMIowBnm5SGya1JdVRKM85NrsmMaO+JVICdpNCACu
0onf3xIDIdl6IRiLRmbrrG2qOHqYSqHXLLs4Yt7530IvGiDyxpGeygJwt35+PZ4T
KH6FMluenkvkHufsY1xRC2PM8kzQ0xtx9ThVNkupQavVN3SOHaMxVFZUqJCuInFl
Y8e6iMyoF7NfQ4ekUwOtpJtFjB5DzMepxg+iAetTV2E2kwAq5qUTrmkzSTd38b+X
YzdeYmngMjBPzMZ/nrBT4cE2kAYyIGUwTDMa5UsClUUBBAN6Igfxn5O6ozlq9FXk
IIujhfgAn64U2DfcYHCZ2w==
-- /key
-- /keys
U2FsdGVkX18ObEPup0W1+45UewyKoUftMzn+dUDRQp9mDCzJ0/7cVYTe6zNJINIU

Так что за кулисами поток идет так,

  • зашифровать SECRET для SECRET.enc с помощью PAD с использованием надежного шифра (в сценарии используется AES 256)
  • защита PAD с помощью асимметричного шифрования для создания PAD.enc (в данном случае SSH + RSA)
  • Теперь вам потребуется SECRET.enc, PAD.enc и фраза секретного ключа для выполнения необходимого дешифрования (скрипт удобно объединяет первые два в один файл)

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

Что касается программных операций, в AFAIK пока нет ни одного модуля, похожего на this в экосистемах, но тогда вы можете извлечь из здесь идею создать свой собственный вспомогательный класс. /module.

...