Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Organization

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

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以外のライブラリを選択した方が良いかとー。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?