如何将openssl_encrypt原始输出转换为二进制字符串?

时间:2016-02-10 16:31:57

标签: php base

我正在使用openssl_encrypt加密某些数字,例如:

<?php

$input = 123;
$binary = decbin($input);

echo $binary; // outputs: 1111011

$cipher = 'aes-128-ecb';
$key = openssl_random_pseudo_bytes(32);

$encodedRaw = openssl_encrypt($binary, $cipher, $key, true);

echo $encodedRaw; // outputs: D�f�e↓v�ne��|۵�

现在,由于所有内容都是数字,而encodedRaw只是一些二进制流(转换为一些奇怪的随机类似字符),我试图将其转换回二进制(01)格式。

$binary2 = bindec($encodedRaw);

echo $binary2; // outputs: 0

似乎bindec()失败并返回false,这被PHP神奇地转换为0。为了确认这一点,我做了一个包含20个随机$输入的循环,并且它们在最后一步都返回了0

如何将openssl_encrypt输出转换为二进制字符串(由0&#39; s和1&#39;组成)?

2 个答案:

答案 0 :(得分:2)

FragmentActivity activity; int imageArray[]; public EndLessAdapter(FragmentActivity act, int[] imgArra) { imageArray = imgArra; activity = act; } public int getCount() { return Integer.MAX_VALUE; } private int pos = 0; public Object instantiateItem(View collection, int position) { ImageView mwebView = new ImageView(activity); ((ViewPager) collection).addView(mwebView, 0); mwebView.setScaleType(ScaleType.FIT_XY); mwebView.setImageResource(imageArray[pos]); if (pos >= imageArray.length - 1) pos = 0; else ++pos; return mwebView; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == ((View) arg1); } @Override public Parcelable saveState() { return null; } 会返回一个&#39; 0&#39;和&#39; 1&#39; charcters。
decbin反其道而行之。它需要一串&#39; 0&#39; 0和&#39; 1&#39; charcters。

它与bindec返回的二进制数据无关。

如果您想以人类可读的形式打印openssl_encrypt,可以使用unpack,例如返回十六进制字符串:

$encodedRaw

要打印类似于var_dump(unpack('h*', $encodedRaw)); 输出的字符串,您可以执行以下操作:

bindec

答案 1 :(得分:0)

Alex的anwser

的附录
  • $hex = unpack('h*', $cipherText)[1]将原始二进制文件转换为十六进制
  • $cipherText = pack('h*', $hex)将十六进制字符串转换为原始二进制文件

虽然dexhexhexdec执行小数&lt; - &gt;十六进制转换,在我的情况下,他们失败了,因为我正在努力工作。

因此我建议使用GMP扩展名:

  • $gmp = gmp_init($hex, 16); hex到GMP,然后:
  • $dec = gmp_strval($gmp, 10); GMP编号基于10号码STRING表示
  • $bin = gmp_strval($gmp, 2); GMP编号基础2编号STRING表示