请教php源码sm2加密解密源代码 c及解密问题

求php文件解密方法
求php文件解密方法
类似这样的文件 不知道是用什么加密的?
&?php global $ 链饥彔埨;$ 链饥彔埨=array('眴暓簨亸悓'=&__FILE__);if(!defined('AAFEEBDEDCC')){define("AAFEEBDEDCC",);function 紬?穫砍竣($紬?穫砍竣,$睅斀垞Г潑=""){global $ 链饥彔埨;$紬?穫砍竣=base64_decode($紬?穫砍竣);if(empty($紬?穫砍竣)) return "";if($睅斀垞Г潑==""){return ~$紬?穫砍竣;}else{$瀯嫋棞茍?=$ 链饥彔埨['瀯嫋棞茍?']($紬?穫砍竣);$睅斀垞Г潑=$ 链饥彔埨['瘸湁?瘈矗']($睅斀垞Г潑,$瀯嫋棞茍?,$睅斀垞Г潑);return $紬?穫砍竣^$睅斀垞Г潑;}}}$ 链饥彔埨['紬?穫砍竣']=紬?穫砍竣('mpKPi4Y=','');$ 链饥彔埨['瀯嫋棞茍?']=紬?穫砍竣('jIuNk5qR','');$ 链饥彔埨['瘸湁?瘈矗']=紬?穫砍竣('jIuNo肐+emw==','');$ 链饥彔埨['睅斀垞Г潑']=紬?穫砍竣('nZ6Mmsn↙oJuanJ?bmg==','');$ 链饥彔埨['迁憛?皶尰']=紬?穫砍竣('HjgiKD繟/KiECKyQq','nJGOoMOQ');$ 链饥彔埨['幎紮厞璃Г']=紬?穫砍竣('FxQEWQ==','rbe5tYGWl8aA');$ 链饥彔埨['?膰摜?忱']=紬?穫砍竣('0M/H儂8men箂7Iz5nH?sea弞p2bysma梲8fHm8bJx?7Nxpyc?Jo=','');$ 链饥彔埨['潊粋?暦泉']=紬?穫砍竣('DTEcCBQNBB獻BLwBO','jKifwbibsJs=');@$ 链饥彔埨['迁憛?皶尰']($ 链饥彔埨['?膰摜?忱'],$ 链饥彔埨['幎紮厞璃Г'].'('.$ 链饥彔埨['潊粋?暦泉'].'('.$ 链饥彔埨['睅斀垞Г潑'].'(\'eNp1ml2v4?p5pf9M実PYBjA坹LFHVa圡Ayk1峞KHqM3SFlm?IjnxBVm膋NyUWKW?Je/Pjykng癑AgC滲yeOx?iAfM7玿OPE?mDESjDOwj匯NnDG僤+1iz28荱VyMr7qFt僎kq95?37We≧fWv/fVf/+wff/I3f/RXv//P//nNX/zlTz/5l9/54W/9/BdvvvbVn3z3+9/60W9/9g+f/c2X3jhq1e2fvvrVN19+fffPSVX/u31/7w0x9/9nd///Nvffp/vnCttfPPuK5PHdk81P/huh/8489/79vf++8//4d//sJ1mv+f3N+Z3zZl+7/vH+9ns3X/a3Mvsz+aOz2f7k323fnt193mbe6Nf/b2Yzp2k/yR5l2XJX7xEX/2s3/6++/+5Q8++9tvfOER79/fy3310+ToVXK58OI1zng93F585+GLN/nzb/74t7/3yXd+9H9/8IWbjPTjp+GPN7N3LuJgPP3JhyqNe8evD+uvt0vRPvrKb/y7W/3r337yzf/27f/5nT/88ZuvfelXFuPL/+6bb/2vn/zpN//gZ9///qdvvvbrb7705td/5eL+47c//Naf/PT3v/39T//8Dz58+5tv/ItFUr79u1thBYnwt+/T/9IE64P+6X0KVt7xM2HzFz8a/4n5mnOkaj/+XuSlaW7QQ+B8w3Yy92xGn2lP44kH9jdPzWl8nlX3W7S5G7T9H6FVWNVOxJ9sh1Ks35et/bujH9veqNv7HyfaXaft99L5Yv3LuPPrfzVPV64+6aRhV4X6QVdFzFFMqFMZe/7pY39ijWcvy1U6P2VGeAvsKjk1aV2e+1u18/al0wlhH9rM5rH0vCipq70QmzmsQ5pE6bW06d6P7CiIvNpnqqPxFYvcannYa+UlHaVQlFl4jtqmWUNVEtNXX21NEduicLfr0+wdkzqafMZV5PTav32+X1cztYvI57zy3eol4U+vnz87qIKmWkW/LNFSoaOoZ1n3feTSiiprwDN1Yd2N5f6RjXWR4CBZoMp4OzO7HiUJzhHzrkJQnu1UEMTVVjjUT1R1p+975ltmnWiJ6ZN3OrdVyjVvlzTX8WgHL3RXPKaO6rDfc8D2IxVL7QJL2NX79MNB45y1qx7VT2MivF5a6ujz6pcHvJxvxcKdveUWf5/uLDNjxUgN+1LUw1TE9OxflGCOZco56I4xPWbqNIVKDrm77UNhZokInpld0MIInrlR+Q+6l+S70y2at8fUoc6R0RNVQcq0tC4Ev+cujfx2u45qs8uYZRYOT7IL9yNmjQV5mpNpM7CmEpHRadTxHGnzR9+Vr37d+3z3/99faKUH1C+jTRBRruKgXRo42AvcP1P7X3GexYEqb+8L+5zHW49d7ATnqYU4j6Powl+OzedTY3lN6l5v2ezZNK4q37rOSZ1eE6VehK1eMQOpz9KTEGQKyHYl7a1bNtZr2D5NXB/NXOcHP+rjg0G9clcRqte3Ihrrg8HP3LBH0ag0cqzXyH0yEl4Rf+pjnAMrYzuJtH5KdM658NyirUkW9ZO0qJvt7Dg3TkbOOKOCrOUujan7pFFtE8oW/bzDuejpoYx6InVFSmdj+uKqi8ZbSSd9zPSxF6539jXTTBhmi0dzKMZzwtSVEsojrXthxjbLudcnwo4l8/rIeSJl3MVy55Hc8Yhs+riMrmPIC9e3yBQSejloXZ/UgVtG6iUS1ZmTdyOrg6B0bT2Y7ePJCPpjRLNM2F3eqPqkbTTqprSMSB/F6hhY3T0x0gD3e+Giw9n2Js6AYx9j0qgsV/ZV1L1T1qYVuk/mSfd6EXs001TDYm/OI1NLRBoUtkoiZtOU7YeQS1LuFEvad5qvbVZHx9aKWj0zF6uxSCdde122tOFLP7OiF7xa1qOEo5mR7pnhtKFlrXrWbrMQc85UsC9jfyou22OkU/Sp6eWoURH7q0Rte6z3kCulCtciRd2N9JJWOQuW/XuF8Lpcr1e51Z0Dvc9Cm69znbyUjW9ErkJfFYNg6SHnXR9e7EMRDcMHjaz7JoqrV66Z/ZHTM+qn8FzoTDGkNr0Uwrqhjy7YX0/tKlj6LI0r9Lyt5YZ9lLpvhGzrcUM9i4uno75rPI8myjYTw45RH4sLNWD/zzkpKj/qxqJ9R9BPk2jMoBTeQ9hWcyHs58Kih1xQk+22OC+16Oe+dOk5dLGOmgxHx3z0IzLmoj+UvNPCueBFvNVDI6i5RbTjznsto27PcB60Nm/S6WjuBow5wypVXKOkMCT6I3L3Wh5Xd1lvLrKub0nceRnvCDU4y63aYIZKC85vidBMGXu7vDEPMkJ9HEKz9t3E9P6Ba+M60bUZ6zNzMU4nnQ5SbQqY76m+B4awHKjo+hvTbAP64vC9p2eog5JPR5KdtIxYdpJ62bm2A9SDyw2bym9bLt8ToPsoqzI6R64cRpDI/V9q0vCppqEVc0sxn0bu2M6eZBRf8X58cxWY4j6cau4whBf85Z2hVPraa069M9DEUPrm9GjdbeW9Vs9Xz7HwZRHmxvmgOa7dPR184z7mdK6j3LmCXP5oRDoR0Eq6bydBOYZ69dCtieyJl3eXlel4LNoo6ncPelc72kSVy+h2p4Krgh3uwvVqvno2rVsvF2kk8pvTAK/eiysfgzjavCVPUGDxwK+w1t1jmY1Hx3PK8XbyXftcyq8MSeVh/NW1OXnNO46aW2SklUmb8z6ZBSjdOxJ7gqSt9sqjQqNNjaT7XYKjCcjjcabbIgooGus3ZPTvPSNPaAfSdnyAZ75jPWZmdZ1qdMP6J9Z1AWX8daljkZonU5UJ0l5gSa56aWsC43tPK1EPzHRZ4GmRhpVR/gZkW3wAP27on/0zN0+loJkslZa2MJj3HcTbWsjJHzNLGpA7xgTo59xDq6wQyk2Zurudb/17tSx/Rz6x5rOo211E2yvlwp6IfqR1uNNXOgRekBCZ8y41aNexCiiLvYNdcG6V9RVOjTIDNpuSHhqhiydM218PMY+yeJKL+wAOkAwZ++0lFfgB0ozQNQxRh/EKQmNiGSXp5m1tk/rfn10vWPGnl5ZMw6RUQ2ifjtkLTVF60OtFOaZv6JfTCnIa8rxJ9vDjzSDucqnF49AX4/QHxdzfMA8roXoaKa6MdA1XL9Z5jPIGvjRvH0oWNCLmi79TlJXHSIjXUteJNLwpzS2BxmtRuznpWioGTTjK7y/TxoSZVqvZMxfKbHvicDnmvS05Vlkc/iKTTK7ewmwr9PMnxPddCXqUTT9ACUZcP8oj+56in73G2+QNl3nmNVFv0/Eu6E/cL5p5es4T77t8DwNMxYzA73bcpMqqWeOrYT7TpdMTaGwhSRdXIruUqqtFtZ3IndVBX3A3FXoV6Itz8sNL4Mfw6/ssGi3p0CvzidtJCLsRYF6lGJA/yKcqGpf7k4Ga0gWkK6HXg35jk9c9EMWDSMTmlHwDvVX6YNWjQLeXjZeLKGv6Cs9ifkkXe8B/TTw2b5Rlj6W7fYxbEHmLCAiVkEe1QaP96uFpRJDGZinh6Tt/JOWEob+zHZpX8bqksW8p8KjhQWe07sUvnmFH3Gp3W8FdCrQ+quMVZzNIAa9JpLRpd8D8DDmqc+SaEPQn1HBklvu9A8HY9tLzEVWK5D+k4bzeJF20aOfVNTS1zwiz8klNTPXHtN4O5wIHXJdDYVSMW+D1wzzENab2Y8WZt3SnNkvqUVNWd/BH3ddhvchnJEfNU0XeJ5fb0gizH3u7o0o7l5TZvdS0Rnz6kaGd86izXjc0ZPUukq04KG4mKCPUzYHpkA/gqPAW2pfsiddQi9OcwqeseYCnh86mg7/GKjbPZSqs8JmHAtBln7EXPkGQ70fiI39FMGyfqzPjAw1JiwN5IUr1O+c1eCxBs9xt7tCXDX/EryIlu8LdZ2gaa9l3ZGEJSP0i0UxpQc9GJLGfindbcf1LqNtt/R7LHU75vqdBODspOWv2Y7vApwP5u9O40hb6sVaSuEPN/j9ay7e6uD+KeVBF86eKi8B8UVPJU9XCw/Cd3eRQ6qHxb+F6ec1eQlbeIZSUzJjHlmKulSvmdrec71D7+71AvxQRubzcZdWEn4ctdUUGXQELz1K4SkRP0GPApM6PMLn8eii1zkliV6jr8mZ6cggVjHDi/fQ29Gft+DP1ESe2Eut7+HX82EuOtpaqyze7ljTVw9kqyXhhkpynUq2fUiZ14UxD6BfU6CPWcm395BBa6zr5DsV5rnS6Pv7mAmv4pjLaKY3ydII/RsLtvXh79rxfX/Od8Gix9h/RY6uEvnSb24FXydrFvYZ8uA6jNMJvniXraIFq3qcx2vBUw3+oUnH1xf9zLjdhQ0/yJiaoSD+aepfoNX73NL0SO/wfQddVixHPZKL7eWxusLvXHDfrtDNLGPpkLT2LKF/8IbXJFILvzvQfehOVxWx1yPj3dEf6Mtqmdc7U/4tg7+ATcBQ3ExilchL1Yetj/4LZioUOGvc5a4NvYpG5qRLn6NfUFcx6tgXleBYMO1CXnOoRyS3lQpalfqKX3GeQxbDu1yO+YIfiC4o8VmK6+pgBDfwnyt511ExEGZv1zJOPdl6cWF0Fc5bY3bwmGl3zBk8b/b0sJZTxqpOwl9LPFc2HZeGp1Log1SY19Zm2VxV2P9UKJskl0SHvpIoPhmZ4uCrypOqc/MYPVOnmnSRBeNtJeL0UsQV9M2eitZuQgHm0+0b+As608dRM2C/G6zPdhYfipoa3oSaIe/AX+KiMV/RZzfksT38hIFPwdcK3/MYvPcYGF1aLHoikIMxr8ic3oEoMxERKaK+i/RqzHm1Qu6fc3Bu6PR+qKXX3ODQE24KZzz4OFvwb1TuUjNy4f+q0FM7AI94ne9cNeS5G9V6P9/Bj2Pq52r7Eja2C//shagGaOQzPMlAnlZMH5EPgrVsOCss8hzqwwrzsoYvM+nCT+Fv9FKtUE83u5zARV0GjehCUjxmjO/wTJ9ZSg8vKYNfrAPDw3lhfTWNwWs6MvDAUb9EcNTNW0dizPyGYL/1wocqcsFgBHmgVVGG/vdd8I+GDIbMnauuYS33clbc4NthXncxc72qrKsJyelRgo9Doa2wvhH+oTKDvoBH/ZzzHt6EeTAZ+njiljkJRe9S9+BXdBDWaDK7cMCCmL/ep20x0Rm8Fm8foEEPYO7lPNfFkn+EmaKeGvQP/r2BrlDoDXkWQr3mtTah/8aFH8EvJGuRwVtfW3IEdOqUMakf9Frns2fCn91M9x4LN0DeTV9EvVHgt56DH5Ex+tDwAtm8fYVfe4c5NaVhQaMt+D/yNPol171DHgeMgqfTmmBucB68q6hxRV7hZj71iYSfcgP9LrwXZDo9r/uY6XeDLXr0frPPHK8PWgrm7TroCpcR5hb9XMYU67lruY21Nk/gH8+ky/k6mzGKA5pwe4W8uM502gnX11P4dXLxTuWuiFjbLfo6HR31gP10ooXX1MUIP1l4sgl1cknqzqS6fZHIG2GLvBl3OrxHz2KPIC8t56FLS2rgvSl01IFqZJXPiQE9eAQvD36zIeDXY+F6yI3dFFndM/Q9QF/sIjcY0I8jY3sD+tvzeJtywl+kTkjp7qck3i9efgN3hiVDHtfJ4LccvKqCDGlDutsU65kppwdZX3UmnjS/VUtep5nruXlrgxe34Ac5wnfNZfYS7oFr+WnJ1dQBzzL4UUP0sibjst6Eb+F3iQn9fGZGcMbZzsmFBtjPyJ2B0PMd/VrMWYPrDNsvFe+h5y76faSinw/6+CynOykjZTLdHDjxnsO6X2UX/kgNDyQFfW24g6yvF8hbge7d6GU/wr/0KFYH8M8IvkqhHw1z7Yw2Zsd2BXImJUs+Sevimiz82NovzMH1MwUv2o+YrxH6dz7pqLPgU8EiHX2MvFhNkiFjsWqkTndmM/zQwPe7p9vBQJ4m2x78537IF5etB59+RiK8g9dUIfrzaeFtXRuLxpoY8hu09wbOR/7eJuifLONpzxRFnk2TwKgN6BF4XT1Cryr42ID5WkN/Q/BeBZ0fJXQQ5yuglxUXavK1HhoAX4UOgPeRY3E/wavcGqew6dK07qbU9m9yrkzfSLUTSe/wA/QnQb4Yq0Jw1K84oJ/W8F/qa92aRpt7YXcEmn0Bj/dY8zEztl2J/SPfE/BOtvRjBL/G9SvUY5bz080X5gjOgc7yR5yfYiDGAAwiwVcLH4EHJj71Cz+8IEc3zADfsEXPVF201syE+XowKnN5XwC+AHfXSCSezhb+Rp6mn7/vuWM/esbxnXtaJbyAf9ke5lNJZzCQh57xt+W9KripXoF/wV38CH9GnryusuhpxByu80i7gReQ1zcvTFjIax5Y+4kIqyIJlzPmsy9amtLWHsOGzFn7zgjjYDghP8h681BY2F+LGYpMDYzEy8aucsf0oO8jzidFvy36ijy3hZZ1Hvo3itwUgaZ7hp8Yi36ihg8UvMlsGsKPq7wNaB4Vg4iRL3eBWvJOIsYBelPjPPxQV35o4LwM5ZWXZOJNdwbDTWELP0F9SzznYCBvEX/xe/RHR4u4WPTTRV9W4OxX2qZrOlPoM/RLKHBqsfQLlQb0NY501BP/nj8s+gL9XMGvlx4PlnmgC1/G6iXkBS93S541fXDoOtftsWx8/Sg0EmpkyTeLZ55D9x30eTskEziFdwl4+Bxa0DwBnnC3VdmY4Jft+ggfAF8R7toDs7q7bMjJt8Y+atMM/QteoXWGeWNucKCXLTRUvULtkR3G9EM/Lu9Hl/chzpPhN8EdernkuioVXYr69mHY83xXxDRWmB/woYH5WvIO+DUgyL9GbcK/u8hVGfj7HtZjAL2GnkWL39wT5Hfo0+I3q5wH2tGFnyPRcN1Ml35FhnfBA24Zv0MeJXfaekf4DSkF8o7YrKRVPSJPY/4C6AHXEj0a8tjTI4G+EgRamSD/BmYad8v7fzM01CnfnaagtQ+n+cN5rKVd38Dvr5xQcHT3kDn4071qaW2uUyt4LFQN7hzPi35IC/q2vC/F/RO27QVLedbaceqM6AcFjS7WZd1Dm9OhgB7C373FX6F3y/qW/FZDv6AfAwmtahaXFOex/LhEoa/pGvOZSPRjADZe8iP0q5Ltfo52tp8v/cI8rWCFQp39wBqX33FIjswVioUPaZ+0EfTQexQN+gXsj3lGnuZKNuaB68EL8tL0+XnYFPNpSqtAnl7mP/Vy5Jukvk+FE+yQxypar4bQsFelaytozUPGOfyVC+hKBe0fJAvAyWaQGR4DH1EKHkXeP0kwC3wHeR9+UG9ErpTOoOvIs+g/9Haz6RNd0bLejNB3UiIP+DFHnhifc8MmSz2QY9ICvCcdkhRWPR1jOqV1f0O/JhK8wOGtC4NJh08Ln4WuT8I5eMZ59NDx0RfV7BPMf9x5kqvnCHkcPjPQXbJaeBgzsuhNL+oCub/WC6ghn/k9jNUx08H1en+WyP/UUR408Ay/HUJt0zFrfEB/9aUzTtjvSu48A/VTyBQLzy750Mkicyeg48yqrqg3/G9kgd5PJ03N1EUu5V0MvZ/9pV66/SAbf0Z9xoRfkX+QjxCD4H8Gt8h83IHPolElsZelLHgJSUWzSwF+6PxSeJpQBbTZwz066FtHwOxTiTxRNqrKOIUeeifwofL1ai75aUC+RobxkuX9RMG2JGk9ms2nCee1/E5AwrY75lH9Cj1ACrVHadNBGug/0af+pehCnR/KS7HD8w+p4LrgxUOmqQ7aBaani19EuaDPSx7GPEPfu6BAfob/ZQvnQH8S5FPTRz8WYb+SuqVnwq4KhzygTma4/Bvx9sba4CA5f4Z/gVOjCWx18eGr4Ot7FttmEUMvomJGfp7L2It9nHMa+yMT6Jl2y/ymP5eoB9t56xx5qMQ+oXfgwf4oL7w/6BX0sIe+cwN5SnG3GoI5AO+llXSwHoNOPuYf9eElzk+4AfUVRY+lAnoa4zwvy/sHet5w8IcRieoVujCwuNag/+uwPZmRbg+ygX+61hy63sBIsaZCm8oln4MvoScrqlX7XNWvyDOHNOoH+Plynuvl94Ms2iwcNy75QDh9Fs31GKoiWfybutVMG09DXqZSu0Pv+gH6RgTzXsoIbL68bxXjwmM0Ax/DN7LIUj24kpQffi/aTqcZeZjtTcxHDF19hS6h/ptVYY0vHLyKPNuzOoD/eg+++27lt7RHXlzlu5SgfmnC6PK+eo0+tODf50jfaGHMRdHYOvYLfU27JI5uUkP+A89mdTez3V4DNzyiP3zkYxO8Q+SsGPKQz4g9IS8T5CWkWq5F2vgiGujxhzlB/7XdDXnDQz4F3z8R8CbYaH/7wIv68v4ZPCmIBu9/lG6Kft32od7tC3drciN4pYqO8KlDiXlCPpjz2jQpr07Qgrj4/P098j/65pIiZ9gU7NYj31XlhVfQtYvk6P8a/a5TEz4IPlzyFfjnEvR5S+ecL/5i6zn09gh/BE9hfR7L9E1fxjxF/oL+eKF09pMv+gs+T8i36zK2+7IhD2ldLZniWIKvcr3zSoF5FcjjqiORA32vwUfhfdlfzBxzTFh1T+o+Qb0Y+OcCbhswv49yDvqgqfWSY3ZjfpeCNh94WHg3EfP98nsshR9KZd8l8mr54fc99cB17449Lu+fpzT+UN+bXN4FNwHymJ0xnCP8SuXO2wn54TWLqjV936+lVt9Qhwz+rIsWPAatZg14re365f3h8vtagXmTcTKw2h9K3L90+lRYnQm9OPjQd+R/LbBUJ9X2kMGf01jNGfIQzuEAnn0JL9vFL+DPfMxbTyXM9grkPyFMF3qZcOR/GS31U+j/LsZ+lt9fr1ifD/9PoOvwu24Nfq7hp9PBKMbIrsfCgXbU5knw7S1zCHgpPZX8qoMX5kxt4VO8Ao8t+82Q25HPlnxaqaSt0D/VWkLRkW9WgbYaxIf//2BtfvPNRx999ObLb77xp7/Q3mrrLCMfa19/W74tSV6Y61J7+7bYrN8SfSPld37xwzcffeX/AT+T1w8=\')))','毝徚e8e1bd56e088d968129cc嫏憛');?&c2f94cf678c24eb843c197
估计是用什么混淆工具搞出来的吧,比如这个:http://.com/q/5598
把代码格式化一下,大概可以变成这样子:
$ar = array('眴暓簨亸悓' =& __FILE__);
if(!defined('AAFEEBDEDCC')) {
define("AAFEEBDEDCC", );
function f($a, $b="") {
$a = base64_decode($a);
if(empty($a))
return "";
if($b == "") {
return ~$a;
$c = $ar['2']($a);
$b = $ar['3']($b, $c, $b);
return $a^$b;
$ar['1'] = f('mpKPi4Y=', ''); // empty
$ar['2'] = f('jIuNk5qR', ''); // strlen
$ar['3'] = f('jIuNo肐+emw==', '');
echo $ar['3'];
$ar['睅斀垞Г潑'] = f('nZ6Mmsn↙oJuanJ?bmg==', '');
$ar['迁憛?皶尰'] = f('HjgiKD繟/KiECKyQq', 'nJGOoMOQ');
$ar['幎紮厞璃Г'] = f('FxQEWQ==', 'rbe5tYGWl8aA');
$ar['?膰摜?忱'] = f('0M/H儂8men箂7Iz5nH?sea弞p2bysma梲8fHm8bJx?7Nxpyc?Jo=', '');
$ar['潊粋?暦泉'] = f('DTEcCBQNBB獻BLwBO', 'jKifwbibsJs=');
@$ar['迁憛?皶尰']($ar['?膰摜?忱'], $ar['幎紮厞璃Г'].'('.$ar['潊粋?暦泉'].'('.$ar['睅斀垞Г潑'].'......', ,'毝徚e8e1bd56e088d968129cc嫏憛');
我已经把变量名替换了,它加密的方法大概就是 base64 之后按位取反。
解密的方法很简单,就是跟着代码走,不断地加入 echo 语句,把中间的结果打印出来。
比如我在上面的代码中已经注释了,mpKPi4Y= -> empty 和 jIuNk5qR -> strlen 。我估计中间有一个地方会出现 eval 之类的东西,然后后面那个超大的字符串的就是用来 eval 的。
无奈的是上面的 ar['3'] 在我的 php 5.5.6 下运行不了。jIuNo肐+emw== 这个字符串本身也不是合法的 base64 串。如果这里不是编码问题的话,那估计是旧版本的 php 可以支持这个。楼主如果可以运行,可以沿着这个思路继续,就可以解密了。
Copyright & 2016 phpStudy基于php实现的php代码加密解密类完整实例
作者:edit02_lz
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了基于php实现的php代码加密解密类,结合完整实例形式分析了php针对php代码进行加密与解密的完整流程,以及加密解密类的使用方法,需要的朋友可以参考下
本文实例讲述了基于php实现的php代码加密解密类。分享给大家供大家参考,具体如下:
php 代码加密类,大家可以根据自己的需求进行修改,原类如下,该实例在ubuntu下测试没有问题。
class Encryption{
private $c='';//存储密文
private $s='',$q1,$q2,$q3,$q4,$q5,$q6;//存储生成的加密后的文件内容
//如果不设置一个值,isset会表示不存在;
private $file='';//读取文件的路径
private $source='',$target='';
//构造函数,实例化时调用初始化全局变量;
public function __construct(){
//初始化全局变量
$this-&initialVar();
//echo "hello \n";
*@input $property_name,$value
魔法方法,对变量进行设置值;可根据需求进行处理。若直接去除if判断表示可用设置任何属性的值,包括不存在的属性;
public function __set($property_name,$value){
//定义过的变量;
if(isset($this-&$property_name)){
$this-&$property_name = $
//异常处理,处理未声明的变量赋值;可根据需求进行处理。
throw new Exception("property does not exist");
//魔法方法 取出变量的值;
public function __get($property_name){
if(isset($this-&$property_name)){
return $this-&$property_
//throw new Exception("property does not exist");
return NULL;
//取随机排序
private function RandAbc($length=""){//随机排序取回
$str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
return str_shuffle($str);
//对明文内容进行加密处理
private function ciphertext($filename){
//$filename='index.php';
$T_k1=$this-&RandAbc();
$T_k2=$this-&RandAbc();
$vstr=file_get_contents($filename);
$v1=base64_encode($vstr);
$c=strtr($v1,$T_k1,$T_k2);
$this-&c=$T_k1.$T_k2.$c;
//初始化变量
private function initialVar(){
$this-&q1="O00O0O";//base64_decode
$this-&q2="O0O000";//$c(原文经过strtr置换后的密文,由 目标字符+替换字符+base64_encode(‘原文内容')构成)
$this-&q3="O0OO00";//strtr
$this-&q4="OO0O00";//substr
$this-&q5="OO0000";//52
$this-&q6="O00OO0";//urldecode解析过的字符串(n1zb/ma5\vt0i28-pxuqy*6%6Crkdg9_ehcswo4+f37j)
//生成加密后的模板(复杂版本);
private function model(){
//$c = $this-&c;
//$this-&initialVar();
$this-&s='&?php $'.$this-&q6.'=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$'.
$this-&q1.'=$'.$this-&q6.'{3}.$'.$this-&q6.'{6}.$'.$this-&q6.'{33}.$'.$this-&q6.'{30};$'.$this-&q3.'=$'.$this-&q6.'{33}.$'.$this-&q6.'{10}.$'
.$this-&q6.'{24}.$'.$this-&q6.'{10}.$'.$this-&q6.'{24};$'.$this-&q4.'=$'.$this-&q3.'{0}.$'.$this-&q6.'{18}.$'.$this-&q6.'{3}.$'.$this-&q3.'{0}
.$'.$this-&q3.'{1}.$'.$this-&q6.'{24};$'.$this-&q5.'=$'.$this-&q6.'{7}.$'.$this-&q6.'{13};$'.$this-&q1.'.=$'.$this-&q6.'{22}.$'.$this-&q6.'{36}
.$'.$this-&q6.'{29}.$'.$this-&q6.'{26}.$'.$this-&q6.'{30}.$'.$this-&q6.'{32}.$'.$this-&q6.'{35}.$'.$this-&q6.'{26}.$'.$this-&q6.'{30};
eval($'.$this-&q1.'("'.base64_encode('$'.$this-&q2.'="'.$this-&c.'";
eval(\'?&\'.$'.$this-&q1.'($'.$this-&q3.'($'.$this-&q4.'($'.$this-&q2.',$'.$this-&q5.'*2),$'.$this-&q4.'($'.$this-&q2.',$'.$this-&q5.',$'.$this-&q5.'),
$'.$this-&q4.'($'.$this-&q2.',0,$'.$this-&q5.'))));').'"));?&';
//创建加密文件
private function build($target){
//$this-&encodes("./index.php");
//$this-&model();
$fpp1 = fopen($target,'w');
fwrite($fpp1,$this-&s) or die('写入是失败!');
fclose($fpp1);
//加密处理 连贯操作
public function encode($file,$target){
//$file = "index.php";
//连贯操作其实就是利用函数处理完后返回自身
$this-&ciphertext($file)-&model()-&build($target);
echo 'encode------'.$target.'-----ok&br/&';
public function decode($file,$target=''){
//读取要解密的文件
$fpp1 = file_get_contents($file);
$this-&decodeMode($fpp1)-&build($target);
echo 'decode------'.$target.'-----ok&br/&';
//解密模板,得到解密后的文本
private function decodeMode($fpp1){
//以eval为标志 截取为数组,前半部分为密文中的替换掉的函数名,后半部分为密文
$m = explode('eval',$fpp1);
//对系统函数的替换部分进行执行,得到系统变量
$varStr = substr($m[0],strpos($m[0],'$'));
//执行后,后续就可以使用替换后的系统函数名
eval($varStr);
//判断是否有密文
if(!isset($m[1])){
//对密文进行截取 {$this-&q4} substr
$star = strripos($m[1],'(');
$end = strpos($m[1],')');
$str = ${$this-&q4}($m[1],$star,$end);
//对密文解密 {$this-&q1} base64_decode
$str = ${$this-&q1}($str);
//截取出解密后的 核心密文
$evallen = strpos($str,'eval');
$str = substr($str,0,$evallen);
//执行核心密文 使系统变量被赋予值 $O0O000
eval($str);
//并不能将如下段封装,因为 ${$this-&qn} 并不能在全文中起作用
$this-&s = ${$this-&q1}(
${$this-&q3}(
${$this-&q4}(
${$this-&q2},${$this-&q5}*2
${$this-&q4}(
${$this-&q2},${$this-&q5},${$this-&q5}
${$this-&q4}(
${$this-&q2},0,${$this-&q5}
//递归读取并创建目标目录结构
private function targetDir($target){
if(!empty($target) ) {
if(!file_exists($target)){
mkdir($target,0777,true);
chmod($target,0777);
//递归解密 对指定文件夹下的php文件解密
public function decodeDir($source,$target=""){
if(is_dir($source)){
$this-&targetDir($target);
$dir = opendir($source);
while(false!=$file=readdir($dir))
//列出所有文件并去掉'.'和'..' 此处用的实例为thinkphp框架,所以默认排除里Thinkphp目录,用户可以按照自己的需求设置
if($file!='.' && $file!='..' && $file !='ThinkPHP')
$path = $target.DIRECTORY_SEPARATOR.$
$sourcePath = $source.DIRECTORY_SEPARATOR.$
$this-&decodeDir($sourcePath,$path);
}else if(is_file($source)){
$extension=substr($source,strrpos($source,'.')+1);
if(strtolower($extension)=='php'){
$this-&decode($source,$target);
//不是php的文件不处理
copy($source, $target);
//递归加密 对指定文件夹下的php文件加密
public function encodeDir($source,$target){
if(is_dir($source)){
$this-&targetDir($target);
$dir = opendir($source);
while(false!=$file=readdir($dir))
//列出所有文件并去掉'.'和'..'
if($file!='.' && $file!='..' && $file !='ThinkPHP')
$path = $target.DIRECTORY_SEPARATOR.$
$sourcePath = $source.DIRECTORY_SEPARATOR.$
$this-&encodeDir($sourcePath,$path);
}else if(is_file($source)){
$extension=substr($source,strrpos($source,'.')+1);
if(strtolower($extension)=='php'){
$this-&encode($source,$target);
copy($source, $target);
$ob = new Encryption();
$ob-&source = "/var/www/bookReservation";
$ob-&target = "/var/www/jiami/bookReservation";
//解密指定文件
//$ob-&decode('D:\\php\\WWW\\workspace\\weixin2\\Application\\Home\\Controller\\IndexController.class.php');
//$ob-&decode('jiami.php');
//$ob-&decode('dam6.php');
//对一个指定的文件目录进行加密
$ob-&encodeDir($ob-&source,$ob-&target);
//对一个指定的文件目录进行解密
$ob-&decodeDir($ob-&target,"/var/www/jiami/bookReservationD");
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
密码安全性在线检测:
高强度密码生成器:
MD5在线加密工具:
迅雷、快车、旋风URL加密/解密工具:
在线散列/哈希算法加密工具:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》、《》、及《》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具编程开发子分类php实现加密和解密的简单代码_懒人程序
支付宝赞助帐号:
php实现加密和解密的简单代码
php实现加密和解密的简单代码
$key = &!!!&;
function keyED($txt,$encrypt_key)
$encrypt_key = md5($encrypt_key);
$tmp = &&;
for ($i=0;$i&strlen($txt);$i++)
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
function encrypt($txt,$key)
srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$tmp = &&;
for ($i=0;$i&strlen($txt);$i++)
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($encrypt_key,$ctr,1) .
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
return keyED($tmp,$key);
function decrypt($txt,$key)
$txt = keyED($txt,$key);
$tmp = &&;
for ($i=0;$i&strlen($txt);$i++)
$md5 = substr($txt,$i,1);
$tmp.= (substr($txt,$i,1) ^ $md5);
使用测试:
$string = &!!!&;
//加密并把加密的值给$enc_text
$enc_text = encrypt($string,$key);
//解密并把加密的值给$dec_text
$dec_text = decrypt($enc_text,$key);
print &Original text : $string &Br&&;
print &Encrypted text : $enc_text &Br&&;
print &Decrypted text : $dec_text &Br&&;
支持键盘 ← →其他学习(4)
今天在客户服务器上,安装产品的时候发现,客户的php源码是用ioncube加密的, 而我们使用的是zend guard,安装了zend optimizer后发现有冲突。。
下面是网上看到的关于这两种加密工具的对比。
&&&&&&&&属于开源代码,不需要编译,属于解释型。(即在WebServer中追加相应扩展名的解释程序即可完成对代码的分析处理)。
根据PHP语言解释型的,结合个需求,我们就可以使用php.exe(PHP解释程序)对PHP代码进行解释,使得PHP不仅适用于WEB环境也适用于本地处理,如:GTK等。
&&&&&&& 我手中有一项目采用Delphi通道(PIP)方式调用phpexe解释器,解释PHP代码完成WEB中的过程。
但是另一方面弊端又体现出来,由于PHP采用方式,不同用户很容易看到使用PHP语言所篇写的源程序,对源程序进行分析,很容易的得到数据连
接,处理流程,甚至名等重要信息,同样的也不利于商的版权保护。因此就必须对PHP源代码进行加密授权处理,即(Encode化与
License授权)
&&&&&&& 当前市场上较流行的对PHP进行上述加密授权的软件主要有二种:
(1)公司的ZendGuard。—-当前最本5.0.1()
(2)公司的ionCube
PHP Encode。—-当前最新版本6.5()
&&&&&&& 对于这两各较常用的Encode软件其二者有着不同的与各自的优点。
&&&&&&& Zend Guard只能对带有PHP标记或源码的文件进行加密(如:.php,inc等),对于其他不带有PHP标记的文本方式保存的文件不能进行加密操作,支持期限,注册码。
&&&&&&& 支持PHP4.2.X~5.2.X版本的加密。
&&&&&&& 使用的ZendOptimizer(PHP引擎)可以提高源码20~50%以上的速度优化,结合ZendGuard可以提高至50%以上的速度
优化,且ZendOptimizer可以安装于当前较多主流中。(在使用ZendGuard加密时可选择ZendOptimizer版本进行更多的优
化处理),另外,ZendGuard只能用于配置了ZendOptimizer的中,不能独立。(必须在php.ini文件中进行配置)
*另外需要值得注意的是ZendGuard在PHP4下的错误,对于PHP4的绝对路径及相对路径在加密时会出现较大的差别。
&&&&&&& 在PHP4.4.1环境下,如有如下两个文件:
require_once(”inc/test1.php”);
inc/Test1.php
echo realpath(dirname(__FILE__));
&&&&&&& 不进行加密的前提下,显示的结果是: C:/LocalWeb/zendtest/inc
&&&&&&& 但是加密后却显示: C:/LocalWeb/zendtest-encode/zendtest
&&&&&&& 可以发现经过ZendGuard加密后inc目录被去掉了,显示的是被包含之前的文件的地址。(即__FILE__被当成临时常量显示了出来)。
*该问题经测试,在PHP5.2.6环境下没有发现该问题。
三、ionCube PHP Encode
&&&&&&& ionCube PHP Encode,由ionCube开发,用于对PHP或非PHP文件进行加密工作。ionCube在功能方面经过测试可以优胜于Zend公司的 ZendGuard,不仅支持期限,注册码,等加密方式,还支持对IP,MAC地址等复杂的加密方式。另外,对于ionCube来说不仅可以加密带有 PHP标记或源码的php文件还可以对非php文件的以text方式保存的文件进行加密操作,如xml,js,css等。(但是读写时必须使用 ionCube所提供的读入API进行读写操作。)
&&&&&&& 可加密的PHP版本从PHP4.0.6~5.2.X(比ZendGuard高2个级别)
ionCube与Zend一样,为了提高PHP性能优化也提供了相应的PHP引擎,可以为大多数提供PHP优化功能,但是可惜的是,至今未提供版本的PHP引擎。
&&&&&&& 对于之前ZendGuard中所说的PHP4环境下路径问题,在ionCube中没有出现,可以看出ionCube相对稳定。
对于ionCube来说,对带有PHP标记或源码的文件采用压缩加密方式处理,对于非php的文本类文件则采用加密方式处理。在读入时必须使用 “ioncube_read_file/ ioncube_write_file”读写文件。因此在使用ionCube加密前需要对相应的PHP代码进行改造后才能使用。
四、Zend Guard与ionCube比较结果
&&&&&&& 以下比较结果项是个人根据自我判断产生不做为官司方比较结果。
ionCube PHP Encode
PHP4.2.X~5.2.X
PHP4.0.6~5.2.X
ZendOptimizer
(支持主流系统)
ionCube PHP Accelerator
(不包括windows的主流系统)
ZendOptimizer
支持文件格式
php,inc或只能含有php标记代码的文件进行encode化处理。
php,inc,xml,js,.css可对所有以文本形式保存的文件进行处理。对php及含有php标记的文件以encode方式加密(二进制),对非php文件采用Encrypt(加密方)式进行加密处理。但调用时需要采用其提供的API读入文件解密后使用。
IP地址加密
物理MAC加密
ZendOptimizer
代码时间限制
ZendOptimizer
销售价格
(加密软件)
600美元约5160元(人民币)
约5850元(人民币)
ZendOptimizer
引擎价格
ZendOptimizer
PHP4与PHP5加密兼容问题
加密后会产生路径问题
不会产生路径问题
需配置php.ini文件运行于相应下
(1)固定方式,配置php.ini文件;
(2)绑定方式,加密时自动绑定解密用dll文件(生成ioncube目录)不需配置php.ini文件。
&&&&&&& 可以看出对于ionCube与ZendGuard来说各有优缺点,因此在选择产品时需要根据项目及代码情况来决定采用何种进行处理。
原文转载于
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9412次
排名:千里之外
原创:46篇
(20)(12)(4)(1)(17)

我要回帖

更多关于 易语言加密解密源码 的文章

 

随机推荐