Apollo18.AutoCipher (Apollo18 v1.1.3)

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

Link to this function

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"
}
Link to this function

decipher(string, parameters, key \\ 0)

(since 1.0.0)

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" <> ...