尝试将私钥保存到数据库时获取无效的字节序列

时间:2013-11-14 00:25:43

标签: ruby-on-rails ruby database utf-8

我试图允许某人将私钥存储在数据库中,而不是将其存储在文件系统中。

在我的pry会话中,它看起来像这样:

[14] pry(main)> a.key = File.read(a.key)
=> "0\x82\u0006\x80\u0002\u0001\u00030\x82\u0006:\u0006\t*\x86H\x86\xF7\r\u0001\a\u0001\xA0\x82\u0006+\u0004\x82\u0006'0\x82\u0006#0\x82\u0003(\u0006\t*\x86H\x86\xF7\r\u0001\a\u0001\xA0\x82\u0003\u0019\u0004\x82\u0003\u00150\x82\u0003\u00110\x82\u0003\r\u0006\v*\x86H\x86\xF7\r\u0001\f\n\u0001\u0002\xA0\x82\u0002\xB20\x82\u0002\xAE0(\u0006\n*\x86H\x86\xF7\r\u0001\f\u0001\u00030\u001A\u0004\u0014\xF1<&&6\xC4\xC8E\u001A\xA1\x95L\xB7\xFD\a9\xD4ۡ\xD7\u0002\u0002\u0004\u0000\u0004\x82\u0002\x80t\xD7\u0010+\x89\u001E\xB77E\t\xAE\xD3E~P\x93\x94\u0017Gن^\xEE\x99^l\"a\x83\x91ϊ\xFF\xEF\xD2\xFAlj\xFF\u001D+\x95Ĺ\xC7\xEC\xBD/`\u007F\xEB#wpR9\xF4\xF5\x92\xD2\xD4\xE2\u0019\xF3\xA4\x82-\x82\u000E\xC5\xC0+\x97ee$\x94 \xE8\xA5?k֕\xDD\u0012\v\xB91H\xE5F\x96\xB8C\u0016W\u001F5l\xB5u8\xF5>\u0002\x9E\u0002\xB4v\xDF;7\x8C\xFA\xAA\xE9ޏ3r5\xF4\xAE+\x8A\u001CD\u00126¬(\a8C\xE7\u000E\x9C\u0006(L\xEB\xED\xEA\xAA\xC8\u0000\xBCaJ\xBB\xED\x8CsM|\xF5\xC8\u0000\u0003\u001CF\xA5:\fr\nLx]g\x99\xF3w\u000E\xFB\x9F\x93Hls\u0011\xB6\xED;\xF7\xE4I8\u0016A\x89-\u001F\r(\f1\x95\u001F\xF3\xC8\xEB\u001E47\\y\u0018\xB6\u007Fp5c\u0018\u0013p\u001E\x9B\x8FzX9a}\xCD\xC1b\x8E\xF7\xC5:ya\x8Ec\xD2d\x88\xC3\xD7\xE7 \xBE\xC6\\\xC8\vI\vO\xA1\x8EG\xD3}tʗ\u0012\xF3\xBA֓\xBFr\xE6\u0003\xBC|\u001Fă\x91\x9C`\xCA[Z\xED8ɡN{\xE2\xA2@\xA7̏\xC1\xC1M4\"e\xB5\xB0M\xB7\u0006n\xBE\x84\u007F9\xB2\xB5\xAB\xB7\fᇹ\xB0i\xE1\u0002<m4\xB5&\u0014VhE\xF5\xC5s쮬\u0018\x8D5y\xD1\xE9\xA5\xFE+R\x8E{\xFA\xA4?x\u001A\r$\x96C\t\xD9\xE0\xF3\xFC-\u0017\x9CF\xB4.L\x86`\xFC\x86Rd߇\xED\u0018\xBF\xF4\x85Й\x80\x9BK\x96\x9A?Y\xAC\xF5D2\xDC\xED2\xDD\n\x89\xC9\u000E\u0014\xC1ߝ\u001Cޯ\x97\x93/!\xFF\x82ӫ\xC8r\u001DM-\xFEQK\t\u0018X\xAE\xB0\u001E\u0013\v\x8Fq\xE7\\+\x8Ex{\xB4\u001E\r\x9A2\xD62\x88\xC6\xD1*PZS\u007Fe\xDB\xEF}P\x81Nfx1_\xB2\xD1\xF1\xBA\xBEt\xF4\x9CI_V\xA6\xF0\xC1܂D\xF9\xD4#\xA8,\x89vm|\t\xA7\xEF\x89\xC0\x88\u0001\\5\x83\u000FR\xAAu\xE1{\u0016ɠ\xB4\x9Ep\u0005\u001Adp6\x91\x96\u0015\x8E;\xE9Ɓ\xF2\xFA\xDA\xC2'\xB5\xDA\xF1\xCBcaTPI\xCEPhэ8\\\e\xCDI\u0003\x8A\x89\xAA\xBCi\x83U~\x83^{I\x86\u0002\xDD\u0014\xD4]\u0015}@_\xB1C\xF0\xF01\xB78p[5\x83$%\x9C\xF3LŮc\xA0/]\x8B\x85-\x96S\xD4\xE1]\xC1\u0006'\xBF\x91A\xD3\n\u0019\x97\xAAq\xA7\u007F\u001D\xBD\x9B3\u0016\x88z\xCB\xF241n;\u000619\u0014\xE1\xC0H 1H0#\u0006\t*\x86H\x86\xF7\r\u0001\t\u00141\u0016\u001E\u0014\u0000p\u0000r\u0000i\u0000v\u0000a\u0000t\u0000e\u0000k\u0000e\u0000y0!\u0006\t*\x86H\x86\xF7\r\u0001\t\u00151\u0014\u0004\u0012Time 13841258913420\x82\u0002\xF3\u0006\t*\x86H\x86\xF7\r\u0001\a\u0006\xA0\x82\u0002\xE40\x82\u0002\xE0\u0002\u0001\u00000\x82\u0002\xD9\u0006\t*\x86H\x86\xF7\r\u0001\a\u00010(\u0006\n*\x86H\x86\xF7\r\u0001\f\u0001\u00060\u001A\u0004\u0014O\bU\u0005\xEF\xA8\xFF?3\x86j\xBF\xFF8\x89ɝ\u0004\x8BZ\u0002\u0002\u0004\u0000\x80\x82\u0002\xA0\x9D\a\xFD\xD3\u0003\xCC\xF5T\x9B\u001A\xC0\xB5\u0004\xB6-۶\xB5h\xAAN\"\x86a\xC5\xF3\xF1\xD4\u000E\\]\x8B\x93W\u001F\xFD\x98\xA7\u0004\xAF\xA0\xCA{ٖ\xF7x\xC0H\x97\xC4~\xA5\xF8\xE1\xEC\x9BH\xEE\u001D\xD9}\xC7x\u0004S\xFD\e\xE1\xA7\xDB\u0015-\u001C\u0019ؐ)\xEB\xB6)Lm\xAA\xFA\xD2v\xEC\u0018\xADV\xA0\xBA\xFA_\xF7\x9AK\x98\xF6ſ\xEF{e\x94\xBCQ\f\xF1\xBA5\xAD8I8F?\xDB\xF3\xA8\xC5\u001Awƨ\xB3\xBA\xE8G\xD6Λ'\u0003\xF4\xE5\xC6\xDE1%\xB5GIL\xE6\xF2-\xA2yf\x81\xEE\xB9\xC0f\x9E\x92\x92\b}Fֱ\u0019\xB7V`\xEB!\x93m\xB5\u0013\xB0\xE3\e\xD6\u0014\x82\xF6\u0000\x87\xE9?\b0@\xB5\xFD@\x99י\xC9pl\xE3\x9E?\x9FCNI<[\u0015\u0012ߙA뒒;.\xA8\xDD}A\u0001\u0014+\u0006\xF2\xFEN\u0002j\xD8s4M0\xF5\u0013C[\xF9\xA8G>\u0011ѷ\xED#\xF1C\x81\xB5n\x8Fq\x92\xD2p\x9B\xB6\x92z!\xC7\a\u000F\x9C\x87K\xA1<\xCF&\xE9փ\xA9\x9A\x88\x96\u0013\x86\xADYz\xA0\a\xBD\u007F\x87/\xE3\u0004Ç~f\xDA\xDE\xF5\xE0\xFBy\xE5\xB5\xE1/X\xEF(\b\xC6\xFA\xAFX.\xC6\xE0\xE4y\xF51\xDCs\xBA\xFFF\xE4\x91!o\xD8\xD1j\u0006\xEE\xED\xBD\u001A\u0000\xA7\u0006t\x8B8\x93\xCD%W\xE8\x84>\xBB\xA2n(\u00193z\x9F\u000F\xFF\xB7O\x91\x8A8\xC7\n\xA8\xF4\x96W\xDF\xCF\xFB\xFAq\x923\u000E\u0005>M\xB1Gf\x9D\x91V\f\xA5\x84\xCEs,\x89H%\x8C\x95\u001C\b\xDAus\x9B\x8E\xEEV\xC3\u0001\xE4\xF4 \x82\x90\xBC\xA9\x92os?;\xA4\xAA\u001D\x92xU\x82\xEE\x8EUXb\u0002ߐ\x99\xE8\x9F\u000E\xB6T\xA6t)\x87\xF9\xBA),\x9D5\xA7\xFC\x83\xAC\xEB\x97\xED\xDF\u0016\xDD(\x966+έ\xAF%zh\x9F\xC1\x9A\xC0xo\xBEU,\xEAg\x89\xF5\n\a<\xF5?\xFB\xB2\xE8\a\x81\u0004\xE8J\xE2\u007F\u0014\x83 %\xC3B\xC8\xDF8\xC2\u001Fb_\u0015-r\xD2C\xA0\xB6\x9B\xFA\xD3\xCEc.k\u0011w\xF9\u0019\xA0\x9F/U\xA4\xCBs\xD3\xE1\xF3h\u001E-\x81t\u0018_3\xFF\xF2\xFB\xE1\xD9$\x8C2Si!\xB7\xF3\xF3(*\xBB%\\\f\x94\xA9=\u0001\u0010\xCCh0\xDD9\xBD\xADf\xA41\xF6ղBg\xA6K\u001A\xCCE\x90\xA9\xC3\xC6\xE0z\xD3>\xFC\x842\xC2\u0005\xD5#\xED\tT\xA7\xAD\xF0\xBB\xD3g\xB0`\xB5\u0005+\x94\xAB\x8Cc\"\xDFhݳe\xE8\xC7\xFBM\u001A\x96-\xEA\xE6\x9A27\xBC\xBF\xAD1\xB37\xD3\f\xC4\xFB\u001D/{\u0019+\u0001\xEBIU\x99\u000F0=0!0\t\u0006\u0005+\u000E\u0003\u0002\u001A\u0005\u0000\u0004\u0014\x9B\xAC\x8B\xDEE\v\xAC\u0013\xCF\xF4\xCBO\xB1'\xE7\u0001C]\xFBQ\u0004\u0014\xA8\xBCEx\x8B\xFA0w\u0006(֖\xF6\xAC\x9B\xEF\u0000J\x96R\u0002\u0002\u0004\u0000"
[15] pry(main)> a.save
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
ArgumentError: invalid byte sequence in UTF-8

我目前正在使用sqlite作为我的数据库适配器。

如何在不丢失数据的情况下存储?理想情况下,我也希望从以后的某个时间开始检索它。

1 个答案:

答案 0 :(得分:0)

尝试:

File.read(a.key, encoding: 'ASCII-8BIT')