Apollo18.AutoCipher (Apollo18 v1.0.6)
Provides cipher mechanism to make your things be like Apollo 18: Officially don't exists, only the owner know that it (if ?) exists.
The truth is out there (Maybe ...).
Uses the Apollo18.CipherDecisor
mechanism to obtain the cipher parameters
an then use Apollo18.Cipher
or Apollo18.Based64Cipher
to cipher/decipher.
(This module functionalities are'nt in web/javascript version
- Do not use this if you send ciphered messages to be deciphered in web browser).
Link to this section Summary
Functions
Uses the Apollo18.CipherDecisor
mechanism to obtain the cipher parameters
based on string length and max_decipher_time_execution_seconds.
After this, use Apollo18.Cipher
or Apollo18.Based64Cipher
to cipher the received string.
Uses Apollo18.Cipher
or Apollo18.Based64Cipher
to decipher the received string. The parameters are same map
object that was generated by cipher(string,max_decipher_time_execution_seconds \ 1)
and contain the salt
and cipher module used to cipher this
received string.
Link to this section Functions
cipher(string, max_decipher_time_execution_seconds \\ 1, key \\ 0)
(since 1.0.0)Uses the Apollo18.CipherDecisor
mechanism to obtain the cipher parameters
based on string length and max_decipher_time_execution_seconds.
After this, use Apollo18.Cipher
or Apollo18.Based64Cipher
to cipher the received string.
Return a map object that contains the original string, the ciphered string and the parameters used to cipher (this parameters should be used to call decipher method in this module, on moment of revert the cipher).
Examples
iex > string = Krug.SanitizerUtil.generate_random(150)
iex > Apollo18.AutoCipher.cipher(string,1)
%{
base64: true,
ciphered: "789C41114140410041104100120D1222127D12E0123D120D120D120D123D120D122D12FC122D120D12311222122D12" <> ...,
salt: 5,
value: "0f(bvuJVG51MxQenz0Dy*dG(3M*OM:KhDtaR9Wz6:PbI@@6lHe6*6f:VyWjKD1/rzW7_Me5C7SDNug.B$ch:a44+$LRk)v2O/PÑmpjCXgqloKB$nL*x3CQ$C7g_w,p9F8Qpr8GOv8f,JSKt/*lvTy7"
}
iex > string = Krug.SanitizerUtil.generate_random(250)
iex > Apollo18.AutoCipher.cipher(string,1)
%{
base64: true,
ciphered: "377ABCAF271C411131FF31FF41104120D083D083D0B2D0DED083D083D0B2D042D09ED06ED0AED06ED09ED06ED07E" <> ...,
salt: 4,
value: "bbWVDv_CkIGNnDTVqq7S:n(K8P$IE10_pG@OKd_ÑcRhz3zyWMI2sxf*a$nZpI-pvbat:XsOBPZBP)hY9Z7ñ2oWQ+@:HYñYe7H7en@sjDVQ.jO(*xBiÑPt/G%bR1@(LMk09SXXñGL%ñhab2h%VB5ItE-v6zTczdr)/cg+SQ:(4dlw:pGxq6rF6gDM2n(ZC7Fc*.28CkcxeX0yC51GUg%hQHqn2lmIhr1Tñ-:HñbvrYZpRe(7$kVk%C9oVdQ"
}
iex > string = Krug.SanitizerUtil.generate_random(2250)
iex > Apollo18.AutoCipher.cipher(string,1)
%{
base64: true,
ciphered: "774F46324151412031FF31EF31CF91C791089108810B818B81DB810B81CC91B7910891A781DB91D791A791B791A791D791A791A" <> ...,
salt: 2,
value: "orS-qcTwJ1YYa)vb(ThQaDQ8)l4S%+foFdE/68$hhÑwMUyÑpÑ-oM+QbtaB+j91yq_5IyD:lb,56d3Urn9hWoxmOG(@L/E+sk_n5ufv3@5daeV$M4._EkO(SYPFG+$-(Bl_cÑve__*TEESk7lhn,Bljy-n8iZcOa8gnK17H2F$)ezdVXCkw@KvÑ2YxEJ%GRW-b*W(lHu4xphyMZ_3Hj3Npk3n7ZtZHW*Rb$%VjPof/DU@q-S2rofLoQx/ED@ÑGnql**l9R1aJK/Io_yv6HI+$ÑTBor/JE*-ñHBrkeaBGñ)P(tñbEJl9nt)r+W@TzñmVKmC2nh85l3_9gwñ1Ñ*y*9Ñ44xkao@nR:rFHHx-Gj_ÑZsGqEG*+gEQC(F7ñjV01WgqTtk/z1rQWjw5ho-3jhkfNlmIOzffWgKc%M@JfFiñMKf__IE5HquRWhd+7UmsUrf6WVKdD2FVmcftFv)sC7Wy-l0iT$G3ñb+3OxK,6*+lDDPÑYñ6h3ijH+MGjf2RG8TaWse9F018zBQV@mp1iw,qpGV3WUtxYNhRsZRCzY5omQÑVS_IhdhuJqaEU/lMXy**iSÑ/hzf9d(_1%/ZmZE:H1-_16+nÑ@Z%7mtBsQbDBr*mrMqlodñÑN5X6nVN./*xt:OY_K(($$mOTNinR0br$/_w-kHIPI:dXKt7q512)JbU@jWvpFi4:rRc*%HG_V/.:.xMvnC4-etlE(3@(a_ZC6tH15kLB.yVYRq8VC0pw1:BCbOnKYV3PJD6+nÑ/*YXuULmGgd.xznp9Qv2Rn2+Dklq(S91CFwRt.k4g0Qa$Uz$Gh5k176s6YGamIR*upLICzm.y4Pr/:eG%ñG4@iX5ñ:WR)KVy-bKKMRpnYTG%Ñ_@yKRSpLmGQRgD5l7Oi@D77Pl7cBVW:xpIidJTR7w7%dd-ÑVg-(+o)w)RVKKtm_SZFOs(mWvnxÑNñq/%zdZi0Ou7O49k$k/yt+NmSx:dMNnr:gjL4$CiR$eBuv--o/F5X.UMuÑ*E.9p(DN6ih0e_mpbGso%ZrK$5iSBnñTqiFkM1qtCC+nB@$.FlZR0XbR0PY8LX*CJ-ClwJ*+)sY1d:iuQ0WLe(JZaJPP)ÑVaZ)x-ÑLohIu%EXdGDRuo41ñXEQE5Wp)m+wmy6O*K5/10j91,ñumz6Foo$9XjBe@v9fePzkG@YcipñJotlvM2XcIpqRIvRnLzgpW+uyJRCkus7aLjG*KBñGMjZJwzh_lBWyDPB:6LVkU++0PWvmrgH5)kLU@Cn:4ZuBII+,p_ñ1fVTs.CE%X8DVb9i7xscfo2j0Ñta_plL@gW/LzKlÑV*am$pTYSe-)Ut(:B8Uo61fUiñH$KyHlsBXDEgSJCpys@TMNuEEñ+7C6$1nNQ3w+YK5rF3cnq1hB/SñuJivOrfñ$p3),o42lc*/KYqB)ñ(yC5pjU*P%zK+tXcQElb4S*zH+wwXQu9aoMseJS+qlatR)NmMxswuT4HX:n_X+U)6aSZ)F9@bvQ,R7rd%h3DNx1PaÑuS4g1S1)ñ%.rtMw3txGhHYdd_:Bgm2:491ZK-QLiMcHÑÑVVXVD5F6GpHX7Nvz4)DYYXykMMy$mÑZCD.M0m.XU)u_+I(cXe9-ñZhtIZl:.$*B.OQ8gqU:b@+l*k78p74/S,Rv.Wi(4bKf/pmxXqwvH2iQjSYvñswm)uODPqZ5cMFpJVxTTJ4lXFdFSnh6qWh4Kw0oQy$u0YM3q1qKcaWR*q@5:,Z(i4viU:X6NIblv78Yb%ñERiue5sG+,tg@Lnb$WdMlN5_eOib2ñ+,WW4W%3KqmrJ+VKCMafIZhg3_BlU4EwPeUNgR28g4lhFi7yZT%9E8x2ñgBhPcf:vYjFXñYyqY.Cmc-Igg4IgrH9b/kLHc@oX0-:8dOVc@)m+4cuSV1zpEZMK_g/cwv:j2dMtay(ddrzD-0+mMBspPzkwvI).dDÑdWHxRz@rtDKwulow8OcY1/GmjHk*P,Ñc*p2+%TbF2Ft4:w8GdC%1QO@$FnO3R(0PsfZMxO6/IHPslY_QroqP*GY6WO$5yaq)bUNpNuCxF3.S)aQ0V3lu4pMZKo))KK$jf3g:qbBÑrfS*0@()QZprz0/NI5Fp1sS+nXW8Y:Cay@Hs3R1wL6kq_,nnHZ%4/UFswPy(-BbTi/bJZ-5XdrNPl6BH,nkDMRMcGjfhsaiwj@sÑs9jC.vZ7TYFQsH@0MRRxF(JojÑQg$(N9D)p51qZYWwNbSaacSf86Fe5a7kFSlÑ-8IBENk*sE)5m,PVf_HñVw"
}
iex > string = Krug.SanitizerUtil.generate_random(2250)
iex > Apollo18.AutoCipher.cipher(string,3)
%{
base64: true,
ciphered: "00000100414131FF31CF414031CFC08DC08DC05DC042C05DC07DC04DC03DC05DC02DC06DC02DC04DC02DC042C042C04DC02DC071C042C05DC02DC05" <> ...,
salt: 3,
value: "orS-qcTwJ1YYa)vb(ThQaDQ8)l4S%+foFdE/68$hhÑwMUyÑpÑ-oM+QbtaB+j91yq_5IyD:lb,56d3Urn9hWoxmOG(@L/E+sk_n5ufv3@5daeV$M4._EkO(SYPFG+$-(Bl_cÑve__*TEESk7lhn,Bljy-n8iZcOa8gnK17H2F$)ezdVXCkw@KvÑ2YxEJ%GRW-b*W(lHu4xphyMZ_3Hj3Npk3n7ZtZHW*Rb$%VjPof/DU@q-S2rofLoQx/ED@ÑGnql**l9R1aJK/Io_yv6HI+$ÑTBor/JE*-ñHBrkeaBGñ)P(tñbEJl9nt)r+W@TzñmVKmC2nh85l3_9gwñ1Ñ*y*9Ñ44xkao@nR:rFHHx-Gj_ÑZsGqEG*+gEQC(F7ñjV01WgqTtk/z1rQWjw5ho-3jhkfNlmIOzffWgKc%M@JfFiñMKf__IE5HquRWhd+7UmsUrf6WVKdD2FVmcftFv)sC7Wy-l0iT$G3ñb+3OxK,6*+lDDPÑYñ6h3ijH+MGjf2RG8TaWse9F018zBQV@mp1iw,qpGV3WUtxYNhRsZRCzY5omQÑVS_IhdhuJqaEU/lMXy**iSÑ/hzf9d(_1%/ZmZE:H1-_16+nÑ@Z%7mtBsQbDBr*mrMqlodñÑN5X6nVN./*xt:OY_K(($$mOTNinR0br$/_w-kHIPI:dXKt7q512)JbU@jWvpFi4:rRc*%HG_V/.:.xMvnC4-etlE(3@(a_ZC6tH15kLB.yVYRq8VC0pw1:BCbOnKYV3PJD6+nÑ/*YXuULmGgd.xznp9Qv2Rn2+Dklq(S91CFwRt.k4g0Qa$Uz$Gh5k176s6YGamIR*upLICzm.y4Pr/:eG%ñG4@iX5ñ:WR)KVy-bKKMRpnYTG%Ñ_@yKRSpLmGQRgD5l7Oi@D77Pl7cBVW:xpIidJTR7w7%dd-ÑVg-(+o)w)RVKKtm_SZFOs(mWvnxÑNñq/%zdZi0Ou7O49k$k/yt+NmSx:dMNnr:gjL4$CiR$eBuv--o/F5X.UMuÑ*E.9p(DN6ih0e_mpbGso%ZrK$5iSBnñTqiFkM1qtCC+nB@$.FlZR0XbR0PY8LX*CJ-ClwJ*+)sY1d:iuQ0WLe(JZaJPP)ÑVaZ)x-ÑLohIu%EXdGDRuo41ñXEQE5Wp)m+wmy6O*K5/10j91,ñumz6Foo$9XjBe@v9fePzkG@YcipñJotlvM2XcIpqRIvRnLzgpW+uyJRCkus7aLjG*KBñGMjZJwzh_lBWyDPB:6LVkU++0PWvmrgH5)kLU@Cn:4ZuBII+,p_ñ1fVTs.CE%X8DVb9i7xscfo2j0Ñta_plL@gW/LzKlÑV*am$pTYSe-)Ut(:B8Uo61fUiñH$KyHlsBXDEgSJCpys@TMNuEEñ+7C6$1nNQ3w+YK5rF3cnq1hB/SñuJivOrfñ$p3),o42lc*/KYqB)ñ(yC5pjU*P%zK+tXcQElb4S*zH+wwXQu9aoMseJS+qlatR)NmMxswuT4HX:n_X+U)6aSZ)F9@bvQ,R7rd%h3DNx1PaÑuS4g1S1)ñ%.rtMw3txGhHYdd_:Bgm2:491ZK-QLiMcHÑÑVVXVD5F6GpHX7Nvz4)DYYXykMMy$mÑZCD.M0m.XU)u_+I(cXe9-ñZhtIZl:.$*B.OQ8gqU:b@+l*k78p74/S,Rv.Wi(4bKf/pmxXqwvH2iQjSYvñswm)uODPqZ5cMFpJVxTTJ4lXFdFSnh6qWh4Kw0oQy$u0YM3q1qKcaWR*q@5:,Z(i4viU:X6NIblv78Yb%ñERiue5sG+,tg@Lnb$WdMlN5_eOib2ñ+,WW4W%3KqmrJ+VKCMafIZhg3_BlU4EwPeUNgR28g4lhFi7yZT%9E8x2ñgBhPcf:vYjFXñYyqY.Cmc-Igg4IgrH9b/kLHc@oX0-:8dOVc@)m+4cuSV1zpEZMK_g/cwv:j2dMtay(ddrzD-0+mMBspPzkwvI).dDÑdWHxRz@rtDKwulow8OcY1/GmjHk*P,Ñc*p2+%TbF2Ft4:w8GdC%1QO@$FnO3R(0PsfZMxO6/IHPslY_QroqP*GY6WO$5yaq)bUNpNuCxF3.S)aQ0V3lu4pMZKo))KK$jf3g:qbBÑrfS*0@()QZprz0/NI5Fp1sS+nXW8Y:Cay@Hs3R1wL6kq_,nnHZ%4/UFswPy(-BbTi/bJZ-5XdrNPl6BH,nkDMRMcGjfhsaiwj@sÑs9jC.vZ7TYFQsH@0MRRxF(JojÑQg$(N9D)p51qZYWwNbSaacSf86Fe5a7kFSlÑ-8IBENk*sE)5m,PVf_HñVw"
}
Uses Apollo18.Cipher
or Apollo18.Based64Cipher
to decipher the received string. The parameters are same map
object that was generated by cipher(string,max_decipher_time_execution_seconds \ 1)
and contain the salt
and cipher module used to cipher this
received string.
Example
iex > cipher_result_map = %{
base64: true,
ciphered: "789C41114140410041104100120D1222127D12E0123D120D120D120D123D120D122D12FC122D120D12311222122D12" <> ...,
salt: 5,
value: "0f(bvuJVG51MxQenz0Dy*dG(3M*OM:KhDtaR9Wz6:PbI@@6lHe6*6f:VyWjKD1/rzW7_Me5C7SDNug.B$ch:a44+$LRk)v2O/PÑmpjCXgqloKB$nL*x3CQ$C7g_w,p9F8Qpr8GOv8f,JSKt/*lvTy7"
}
iex > cipher_result_map
|> Krug.MapUtil.get(:ciphered)
|> Apollo18.AutoCipher.decipher(cipher_result_map)
"0f(bvuJVG51MxQenz0Dy*dG(3M*OM:KhDtaR9Wz6:PbI@@6lHe6*6f:VyWjKD1/rzW7_Me5C7SDNug.B$c" <> ...