当前位置:   article > 正文

php读取加密文件并解密_thinkphp读取密钥文件内容

thinkphp读取密钥文件内容

用php 测试一个加密的文件,发现总是解不对,认真研究后,发现网上下载的unicode 文件头部包含了“0xef 0xbb 0xbf"三个字节,查网原来是unicode 签名,嗯,就是这么个鬼,贴上我的php解密程序,还有一些用途。

//展示如何从命令行获取参数
//展示如何获取文件内容到字符串或内存
//展示如何获取字母数值 ord(char)
//展示一个简单的解密算法
//发现网站上下载的unicode 文件,其头部包含了0xef,0xbb,0xbf 这三个字符(unicode 标志,签名)

  1. <?php
  2. //展示如何从命令行获取参数
  3. //展示如何获取文件内容到字符串或内存
  4. //展示如何获取字母数值 ord(char)
  5. //展示一个简单的解密算法
  6. //发现网站上下载的unicode 文件,其头部包含了0xef,0xbb,0xbf 这三个字符(unicode 标志,签名)
  7. echo "argc:=" . $argc ."\n";
  8. print_r($argv) ; //argv[0] 是自己,argv[1] 是参数1
  9. if(file_exists($argv[1]))
  10. {
  11. $content=file_get_contents($argv[1]);
  12. $decode = decrypt($content,"techwin");
  13. echo $decode;
  14. }
  15. // 网站上下载的unicode 文件, 带有BOM(byte order mark)ef bb bf 三个字节。
  16. // 用二进制文件打开,可以看到这三个字符,用010editor可以看到,用xxd 可以看到.
  17. // 用文本编辑器就看不到了, 原来还隐藏这么个鬼。
  18. // 所以解密时必须要去掉这三个字节, 解密都是按字节计算的。
  19. function decrypt($str,$key)
  20. {
  21. //前3个字符是ef bb bf BOM(byte order mark) unicode 签名,
  22. if(ord($str[0])==0xef && ord($str[1])==0xbb && ord($str[2])==0xbf)
  23. {
  24. echo "unicode BOM.\n";
  25. $str=substr($str,3);
  26. }
  27. $decode="";
  28. $len=strlen($str);
  29. $keylen=strlen($key);
  30. for($i=0;$i<$len;$i++)
  31. {
  32. $ki= $i% $keylen;
  33. $decode .= $str[$i] ^ $key[$ki];
  34. }
  35. return $decode;
  36. }
  37. ?>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/231992
推荐阅读
相关标签
  

闽ICP备14008679号