The object is to provide a secure functional encryption scheme having a large number of cryptographic functions. An access structure is constituted by applying the inner-product of attribute vectors to a span program. The access structure has a degree of freedom in design of the span program and design of the attribute vectors, thus having a large degree of freedom in design of access control. A secure functional encryption process having a large number of cryptographic functions is implemented by employing the concept of secret sharing for the access structure.