# Does Bob really need functional encryption?

As we have seen, Bob pays for the shoes of Alice's many pets. He doesn't know how many animals Alice has though.

Having encryption of Alice's vector

(which contains the number of different shoes needed) and a functional encryption key for a publicly known vector (the price of different shoes), Bob can compute which is exactly the price he needs to pay.But Bob now has a better idea. He thinks that the same thing can be achieved with traditional public-key cryptography.

Alice simply needs to encrypt

with Bob's public key. And everything is pretty much the same – the message is encrypted and Bob knows only , nothing else about .But there's a catch. Remember, Bob pays for Alice's pets' shoes each and every week. However, he doesn't have to interact with Alice at all. Alice only has to send the encrypted

once. Bob just has to get a new functional encryption key every week.Getting one key from Key Generator every week might seem pretty much the same as getting one message from Alice every week. And it is. But imagine Alice has hundreds or even thousands of friends. All with pets that need new shoes every week. And Bob would love to pay Alice's friends' bills too.

Now it makes a huge difference whether Bob needs to receive thousands of messages from Alice's friends every week, or just one from Key Generator. With traditional public-key cryptography, each friend would have to send a message (containing encrypted price) to Bob every week.

Note that the only value that changes is

. With functional encryption, Bob would only need a new functional encryption key from the Key Generator each week.The vectors

would only need to be sent to Bob once. Smart, right?