LoginSignup
0
0

More than 5 years have passed since last update.

iOS/Androidにおけるcrypto-jsの不具合

Posted at

iOS/Android対応のブラウザアプリでcrypto-jsを利用していたところ、数千回に1回ぐらいの割合で以下のような現象が発生しました。

  • SHA256によるハッシュ生成で違う値が生成される
  • AES/DESによる暗号化したデータを復号化しようとしてもMalformed UTF-8 dataのエラーが発生する

調べてみたところ、

Mobile Safari in iOS 6.1.3 produces Error: Malformed UTF-8 data

に近い現象の模様。
上記のディスカッションでは、それなりに大きいサイズのファイルで、かつiOSの話でしたが、数百文字程度の文字列でも発生しました。
失敗したら再度やり直すという対応をいれても発生し続けたので、どうにもならん感じ。

回避策としては、

  • Hash生成には jsSHA を使用
  • 暗号化は独自ロジックで実装

で対応しました
AESあるいはDESなどの暗号化が必須な場合は、crypto-js以外のライブラリを選択した方が良いかとー。

結局何が原因なのかははっきり分からないのが気持ち悪いところ・・・

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0